go语言入门
基础语法
// 示例 1
package main
import (
"fmt"
)
func main(){
fmt.Println("hello world")
}
// 示例2 变量
package main
import (
"fmt"
"math"
)
func main() {
var a = "initial"
var b, c int = 1, 2
var d = true
var e float64
f := float32(e)
g := a + "foo"
fmt.Println(a, b, c, d, e, f)
fmt.Println(g)
const s string = "constant"
const h = 5000000
const i = 3e20 / h
fmt.Println(s, h, i, math.Sin(h), math.Sin(i))
}
标准库
- fmt
- 向屏幕输入输出字符串
- 格式化字符串
问题1
- 没有引用导入的库时,出现报错
*
- 引用之后
- ‘_’的作用
- 导入包是否使用下划线 _ 取决于你是否需要在代码中直接使用该包中的标识符。如果不需要直接使用,可以使用匿名导入来避免编译错误。如果需要直接使用,就应该正常导入并在代码中使用相应的标识符。匿名导入,只执行包的初始化操作。
问题2 没有直接使用,为什么需要匿名导入来初始化
- 当导入一个包时,该包中的全局变量的初始化语句和 init 函数将会被执行。这些全局变量和 init 函数的初始化过程可能涉及一些必要的操作,例如注册数据库驱动、初始化配置、启动定时任务等。
// chatGPT的示例
package main
import (
_ "github.com/go-sql-driver/mysql" // 匿名导入数据库驱动,触发初始化
)
func main() {
// 在这里你没有直接使用导入包中的标识符,只是为了触发数据库驱动的初始化
// 以便在其他地方可以正常使用该驱动
}
问题3 有没有别的导入方式
- 点号 .:使用点号 . 导入包后,可以直接使用该包中的标识符,而无需通过包名限定。这种方式虽然方便,但在代码中容易造成命名冲突,因此不建议在实际项目中过多使用。
package main
import (
. "fmt" // 使用点号导入 fmt 包,可以直接使用 fmt 包中的标识符,无需写成 fmt.Println()
)
func main() {
Println("Hello, World!") // 直接使用 Println(),无需写成 fmt.Println()
}
2. 别名:可以使用别名为导入的包起一个独立的名字,以避免与其他包名称冲突或者缩短包名称。
package main
import (
f "fmt" // 使用别名 f 导入 fmt 包
)
func main() {
f.Println("Hello, World!") // 使用别名 f 调用 fmt 包中的 Println() 函数
}