文章目录
go 语言学习笔记①
线上编译器 https://play.golang.org
一个小程序
package main//(包名)
import "fmt"//(引入其他包) fmt输出
func main() {//main函数首先执行
fmt.Println("hello world")//调用pmt包中Println函数 Println 打印在一行
}
句末不用加分号 (自动加)
花括号”{“要写到句末, 不能另起一行
导入包没有使用会报错
变量声明没用使用会报错
使用其他包中函数
- 导包 eg:
import "fmt"
- 调函数 eg :
fmt.Println("hello world")
引用包不调用会报错
导入多个包
import(
"math"
"strings"
)
数据类型
go是静态类型
字符串
双引号之间的文本
转义序列 | 值 |
---|---|
\n | 换行符 |
\t | 制表符 |
\" | 双引号 |
\|反斜杠 |
len(变量名) 字符串长度
符文(rune)
(c语言中的字符)
单引号
Unicode字符编码
布尔值
两个值true false
数字
整型和浮点数
查看变量类型
导入包 reflect
使用函数TypeOf
package main
import (
"fmt"
"reflect"
)
func main() {
fmt.Println(reflect.TypeOf(1))
}
类型 | 描述 |
---|---|
int | 整型, 保存数字 |
float64 | 浮点数, 保存带小数部分的数字 |
bool | 布尔值 |
string | 字符串 |
变量声明
var 变量名 变量类型
var a int
可以同时声明多个变量
var a ,b int
为多个变量赋值
var a , b int = 1 , 2
零值
int 0
float64 0
string 空字符串
bool false
短声明变量并赋值
自动推导类型
a := 1
b := 3.6
c := true
一个变量在同一作用域里只能声明一次
赋值 = 声明并赋值:=
只能给变量赋相同类型的值
有几个声明变量后面就要有几个值
命名规则
必须以字母开头 字符和数字
小驼峰 大驼峰
只用名称是以大写字母开头的变量,函数或类型才被认为是可以到处的:可以从当前包之外的包访问
类型转换
int * float64 会报错
转换 float64(int变量名)
交换两个值
(类py)
package main
import "fmt"
func main() {
a := 10
b := 20
fmt.Println(a, b)
a, b = b, a
fmt.Println(a, b)
}
常量和变量
变量:程序运行期间可以改变的量, 变量声明需要var
常量:程序运行期间 不可以改变的量, 常量声明需要const 不能使用 :=
const a int = 10
iota
给常量赋值使用
常量自动生成器 , 每隔一行, 自动累计加1
遇到const 重置为0
可以只写一个iota
如果在同一行值一样
package main
import "fmt"
func main() {
const (
a = iota
b = iota
)
const (
c = iota
d = iota
)
fmt.Println(a, b, c, d)
//输出0 1 0 1
const (
aa = iota
bb
cc
)
fmt.Println(aa, bb, cc)
//输出0 1 2
}
输出
fmt.Println("")
自动换行
fmt.Printf("")
格式化输出
选择
if…… else if ……else
package main
import "fmt"
func main() {
g := 100
if g >= 80 {
fmt.Println("优秀")
} else if g >= 60 {
fmt.Println("及格")
} else {
fmt.Println("不及格")
}
}
switch
package main
import "fmt"
func main() {
num := 100
switch num {
case 100, 90:
fmt.Println("优秀")
case 80, 70, 60:
fmt.Println("及格")
default:
fmt.Println("不及格")
}
}
可以有多个值, 自带break
fallthrough不跳出继续向下执行
循环
无 while 循环
for
类c语言for循环
package main
import "fmt"
func main() {
for i := 1; i <= 10; i++ {
fmt.Println(i)
}
}
range
返回两个值第一个是位置第二个是当前位置的值
package main
import "fmt"
func main() {
str := "abc"
for i, date := range str {
fmt.Println(i,date)
}
}
package main
import "fmt"
func main() {
str := "abc"
for _, date := range str {
fmt.Println(date)
}
}