#go
# #Вперед
Вопрос:
Этот код
package main
import (
"fmt"
)
func main() {
fmt.Println("%%dude")
}
Ссылка на игровую площадку: https://play.golang.org/p/Shq5pMHg4bj
выдает go vet
предупреждение
./prog.go:8:2: Println call has possible formatting directive %d
Как я могу сказать go vet, что я действительно хочу написать два знака процента и не предупреждать меня?
Комментарии:
1. Замените второй (или оба) % на x25
Ответ №1:
Вы не можете подавить это, но даже если бы вы могли с помощью пользовательских правил и флагов, я бы не стал этого делать, потому что кто-то другой, создающий ваш код, все равно столкнется с этим.
Вместо этого вы можете использовать любую из этих альтернатив, которые выдают тот же результат без каких-либо предупреждений от vet
:
fmt.Println("%%" "dude")
fmt.Println("%x25dude")
fmt.Printf("%%%%duden")
s := "%%dude"
fmt.Println(s)
Попробуйте примеры на Go Playground.
Комментарии:
1. Спасибо. Такой комментарий
// go vet: I really mean %%
мог бы решить эту проблему во всех кодовых базах.2. @topskip По этому поводу было обсуждение (см. Предложение: cmd / vet: добавить механизм для отключения ложных срабатываний # 17058 ), которое было отклонено.
3. Я пытаюсь напечатать «%sign», все это приводит к жалобам от fmt «go vet». Println(«%sign») fmt. Println(» x25sign») fmt. Println(«%» «знак») Мой единственный вариант разделить его на два вызова print? fmt. Print(«%») fmt. Println(«знак»)
4. @drhender Если вам нужен один вызов print без переменных, вы можете выполнить
fmt.Printf("%%signn")
илиfmt.Printf("%ssignn", "%")
илиfmt.Printf("%sn", "%sign")
.
Ответ №2:
На самом деле вы не можете (кроме того, что не пишете этот код). Go vet не имеет никакого механизма для комментариев «я действительно имел в виду это», чтобы подавить предупреждения. За последние пять лет было несколько дискуссий по этому поводу, но ни одна из них не привела к каким-либо действиям. Вам просто нужно принять то, что говорится в тексте справки: go vet «использует эвристику, которая не гарантирует, что все отчеты являются подлинными проблемами».
Комментарии:
1. Ну что ж, думаю, мне придется принять этот ответ… Большое вам за это спасибо.