代码里有详细的注释
package main
/* 这个点操作的含义就是这个包导入之后在你调用这个包的函数时,你可以省略前缀的包名,
也就是前面你调用的fmt.Println("hello world")可以省略的写成Println("hello world")
import(
f "fmt"
)
别名操作的话调用包函数时前缀变成了我们的前缀,即f.Println("hello world")
_操作其实是引入该包,而不直接使用包里面的函数,而是调用了该包里面的init函数。
*/
//分组导入
import (
. "fmt"
"os"
)
func init() {
Println("首先调用init初始化函数。。。")
}
func init() {
Println("init函数可以有多个。。。")
}
//分组定义,增加可读性
const (
f int = iota
g int = iota
h
i string = "i" // 它默认开始值是0,const中每增加一行加1
j int = iota
l, m, n = iota, iota, iota //l,m,n iota在同一行值相同
)
const k = iota // 每遇到一个const关键字,iota就会重置,此时k == 0
//默认为false 0 0
var (
isGo bool
isGoInt int
isGoFloat float32
isGoString string
)
func main() {
_, d := 34, 35 //_(下划线)是个特殊的变量名,任何赋予它的值都会被丢弃。在这个例子中,我们将值35赋予b,并同时丢弃34:
var a, b, c int = 1, 2, 3
Println("Hello, World!", a, b, c, d, f, g, h, i, j, k, l, m, n, isGo, isGoInt, isGoFloat, isGoString)
stringLearn()
Println(os.Hostname())
}
func stringLearn() {
s1 := "hello"
Println(s1[3:]) //从3截取到结尾,结果:lo
Println(s1[1:3]) //从1截取到3,结果:el
c1 := []byte(s1) //类型转换
Println(c1)
s2 := `Hello
world` //原样打印 类似于pre 标签
Println(s2)
}