例如
func main() {
//变量初始化语句
var name string = "tom"
var age int = 19
var b bool = true
fmt.Printf("name: %v\n", name)
fmt.Printf("age: %v\n", age)
fmt.Printf("b: %v\n", b)
}
func main() {
var (
name string
age int
b bool
)
name = "Tom"
age = 19
b = true
fmt.Printf("name: %v\n", name)
fmt.Printf("age: %v\n", age)
fmt.Printf("b: %v\n", b)
}
在声明变量时,根据初始化值进行推导省略类型
func main() {
var name = "tom"
var age = 19
var b = true
fmt.Printf("name: %v\n", name)
fmt.Printf("age: %v\n", age)
fmt.Printf("b: %v\n", b)
}
func main() {
//批量初始化
var name, age, b = "tom", 20, true
fmt.Printf("name: %v\n", name)
fmt.Printf("age: %v\n", age)
fmt.Printf("b: %v\n", b)
}
在函数内部可以使用 := 运算符对变量进行声明和初始化。
短变量不能放在函数外边
func main() {
// 短变量声明
name := "杨过"
email := "[email protected]"
age := 20
fmt.Printf("name: %v\n", name)
fmt.Printf("email: %v\n", email)
fmt.Printf("age: %v\n", age)
}
如果我们接收到多个变量,有一些变量使用不到,可以使用下划线_表示变量名称
func getNameAndAge() (string, int) {
return "tom", 20
}
func main() {
_, age := getNameAndAge()
fmt.Printf("age: %v\n", age)
}
import "fmt"
func main() {
name := "tom"
age := "20"
msg := fmt.Sprintf("%s,%s", name, age)
fmt.Printf("msg: %v\n", msg)
}
func main() {
name := "tom"
age := "20"
s := strings.Join([]string{name, age}, ",")
fmt.Printf("s: %v\n", s)
}
效率比较高
import (
"bytes"
"fmt"
)
func main() {
//字符串连接
var buffer bytes.Buffer
buffer.WriteString("tom")
buffer.WriteString(",")
buffer.WriteString("20")
fmt.Printf("buffer.String(): %v\n", buffer.String())
}
package main
import (
"fmt"
"strings"
)
func main() {
// Go语言字符串常用用法
s := "Hello World"
//字符串分割
fmt.Printf("strings.Split(s, \" \"): %v\n", strings.Split(s, " "))
//查看是否存在关键字
fmt.Printf("strings.Contains(s, hello): %v\n", strings.Contains(s, "hello"))
//小写
fmt.Printf("strings.ToLower(s): %v\n", strings.ToLower(s))
//大写
fmt.Printf("strings.ToUpper(s): %v\n", strings.ToUpper(s))
//判断字符串前缀是否为“Hello”,output为bool类型
fmt.Printf("strings.HasPrefix(s, \"Hello\"): %v\n", strings.HasPrefix(s, "Hello"))
//判断字符串后缀是否为“world”,output为bool类型
fmt.Printf("strings.HasSuffix(s, \"World\"): %v\n", strings.HasSuffix(s, "world"))
//查找第一个字符串位置index
fmt.Printf("strings.Index(s, \"o\"): %v\n", strings.Index(s, "o"))
//查找最后一个字符串的位置LastIndex
fmt.Printf("strings.LastIndex(s, \"o\"): %v\n", strings.LastIndex(s, "o"))
}
%v:获取数据的值,如果实现了error 接口,仅表示错误消息。
fmt.Printf("%v", data)
// 输出
{例子}
fmt.Printf("%v", errors.New("我错了"))
// 输出
我错了
。
%+v:获取数据的值,如果结构体,会携带字段名
fmt.Printf("%+v", data)
// 输出
{Content:例子}
%#v:获取数据的值,如果是结构体,会携带结构体名和字段名。
fmt.Printf("%#v", data)
// 输出
main.Example{Content:"例子"}
fmt.Printf("%T", data)
// 输出
main.Example
fmt.Printf("%t", true)
// 输出
true
fmt.Printf("%b", 4)
// 输出
100
fmt.Printf("%c", 0x82d7)
// 输出
苗
fmt.Printf("%d,%d,%d", 10, 010, 0x10)
// 输出
10,8,16
fmt.Printf("%o,%o,%o", 10, 010, 0x10)
// 输出
12,10,20
在很多开发语言中,0 打头的数字都表示八进制。通过 %#o 输出带 0 开头
fmt.Printf("\n%#o\n", 10)
// 输出
012
And more:
更多占位符请点击