for example, https://github.com/golang/sys/blob/master/cpu/cpu_gccgo_x86.go#L5 :
//go:build (386 || amd64 || amd64p32) && gccgo
// +build 386 amd64 amd64p32
// +build gccgo
package cpu
In my eyes, as a build tag, // +build ... can work well.
Why is //go:build still explicitly specified?
Btw, it is hard to find the mannual of //go:build, but // +build is easy(https://pkg.go.dev/cmd/go#hdr-Build_constraints)