目录
Hello World!
变量和常量
变量交换
匿名变量
常量
iota——特殊常量
基本数据类型
数据类型转换
运算符
算数运算符
关系运算符
逻辑运算符
位运算符号
编辑
赋值运算符
输入输出方法
流程控制
函数
可变参数类型
值传递和引用传递
Hello World!
在电脑下载好GoLand后运行并创建一个go文件输入如下代码,导入一个系统包fmt用来输出。
这里的入口函数默认也是main函数。
import "fmt"
func main() {
fmt.Println("hello world")
}
变量和常量
定义变量使用var关键字
变量定义的标准格式如下,如果不指定值的话就是默认值,变量明明使用驼峰命名法。
var 变量名 变量类型
var (
name string
age int
addr string
)
import "fmt"
func main() {
var (
name string = "北岭山脚鼠鼠"
age int = 21
addr string = ""
)
// 语法糖,可以自动推导类型,但必须是之前没有出现过的变量
name: ="北岭山"
age:= 21
fmt.Println(name)
}
func main() {
name := "北岭山脚鼠鼠"
age := 21
addr := ""
fmt.Println(name, age, addr)
fmt.Printf("name:%T,age:%T\n", name, age) //查看类型
fmt.Printf("name:%s,age:%d\n", name, age) //获取值
fmt.Printf("name:%p,age:%p", &name, &age) //获取地址
}
变量交换
func main() {
var a int = 100
var b int = 200
//传统交换
//tmp := a
//b = tmp
//a = b
//go交换
a, b = b, a
fmt.Print(a, b)
}
匿名变量
可以用于接收任何类型的变量,但是后续都无法使用。
func test() (int, int) {
return 100, 200
}
func main() {
a, _ := test()
_, b := test()
fmt.Print(a, b) //输出100,200
}
常量
类型:bool ,int ,float:32,float:64,string,复数型
把var 改成const就是常量的定义方式。
const url string = "www.yhy2002.com" //显式定义
const url2 = "yhy2002.com" //隐式定义
url3 := "hyh2002.com"
const a,b,c="y","h","y"
fmt.Print(url3)
iota——特殊常量
func main() {
const (
a = iota
d
e
b = iota
f
c = iota
)
const (
g=iota
)
fmt.Print(a, b, c,g)
}
得到结果如下
0,3,5,0
基本数据类型
整型如下有
别名
浮点数有如下
func main() {
const (
a bool = true
b int = 5
c float64 = 5.2
d string = "北岭山脚鼠鼠"
)
fmt.Printf("%t,%d,%.6f,%s", a, b, c, d+d)
}
数据类型转换
并且只能由范围小的转到范围大的,大转小会有精度丢失
func main() {
a := 3
c := float64(a)
fmt.Print(c)
}
运算符
算数运算符
关系运算符
逻辑运算符
位运算符号
赋值运算符
输入输出方法
var a int
var b float64
fmt.Println() //打印并换行
//fmt.Printf() //格式化输出
fmt.Print() //打印输出
//
fmt.Scanln(&a, &b) //
fmt.Scanf("%d,%f", &a, &b) //接收格式化输入 作业
fmt.Scan(&a) //接收输入作业
流程控制
if 条件1 {
}else if 条件2{
}else {
}
switch 条件1{ //默认case最后自带break
case 值1:
fallthrough //不管下一个条件是否满足都会执行下一条语句
case 值2:
case 值3:
default:
}
for i:= 1;i<=5;i++{
continue
break
}
//遍历string
str := "abcd"
len := len(str)
for i := 0; i < len; i++ {
fmt.Printf("%c", str[i])
}
for i, v := range str {
fmt.Printf("%d,%c", i, v)
}
函数
func get(a int, b string) (string,int){
fmt.Printf("yhy")
return "yhy",231
}
可变参数类型
func get(a ...int) (string, int) {
fmt.Printf("yhy")
return "yhy", 231
}
值传递和引用传递