Go语言(二)

Go语言(二)

二、语法

注释

单行注释://
多行注释:/**/
变量操作
变量声明赋值:var 变量名称 类型
Eg:

var age int = 10
var num,sum int

自动推导类型:变量名:=赋值
Eg:

num1 := 10

输出

fmt.Println(num1, num2, num3)
fmt.Printf("num1 = %d\n", num1)
fmt.Scanf("%d",&age)
fmt.Scan(&age)
//有格式的输出
 fmt.Println(num, num1)
//格式化输出
 fmt.Printf("num = %d\n", num)

数据类型(%T表示输出变量类型)

//整型 int有符号整型 uint无符号整型-->正整数
 var age uint
 age = -10 //uint无符号整型,报错
 fmt.Println(age)
 //浮点  float32精确到后7位  float64精确到后15位(建议使用float64)
 var num float64
 var num1 float64
 num = 123.45
 num1 = 123.4567
 fmt.Printf("%f\n", num)    //123.450000保留六位小数,不足补齐
 fmt.Printf("%f\n", num1)   //123.456700
 fmt.Printf("%.2f\n", num1) //123.46保留两位小数,同时四舍五入
 fmt.Printf("%T", num)      //输出类型
 //布尔 bool ---true,false
 var isResult bool
 isResult = false
 fmt.Printf("%T\n", isResult)
 fmt.Println(isResult)
 //字符
 var chr byte = 'A' //单引号引起的单个字符为字符类型,一定是单引号
 fmt.Println(chr)
 var name string = "a" //中
 fmt.Println(name)
 fmt.Println(len(name)) //注意:中文字符一个汉字占3个字符
 //强制类型转换:需转换的类型(变量)
 var num int = 10
 fmt.Println(float64(num))
 fmt.Printf("%T", float64(num))
 var name string = "啦啦啦"
 var age int = 10
 fmt.Scan(&name)
 fmt.Scan(&age)
 fmt.Println("%s年龄是%d", name, age)
 //常量
 const PI = 3.14
 fmt.Println(PI)

运算符

+、-、、/、%、++后自增、–后自减(无前自增和前自减,只能写在变量后面)
=、+=、-=、
=、/=、%=
==、!=、<、>、<=、>=
!、&&、||
优先级:

if

var num int = 9
 if num > 9 {
  fmt.Println("PPPPPP")
 } else if num == 9 {
  fmt.Println(num)
 } else {
  fmt.Println("lllllllllllll")
 }

switch

var data int = 10
 switch data {
 case 10:
  fmt.Println("kkkkk")
 default:
  fmt.Println("dddd")
 }

for

for i := 0; i < 10; i++ {
  fmt.Println(i)
 }
 var i int
 for i = 0; i < 4; i++ {
  fmt.Println(i)
 }
//break结束当前循环
//continue语句:结束本轮循环,然后进行循环条件判断,如果成立进行然后进入下一轮循环,否则退出循环

函数

定义:func 函数名 ( ) {函数体},参数:固定参数num1 int、不定参数arg …int,固定参数放在前面,不定参数放在后面

var num = play(1, 2, 4, 6)
 fmt.Println(num)
func play(num int, num1 int, arg ...int) int { // 表示指定函数返回的数据的类型
  fmt.Println("kkkkkkkkkkk")
  fmt.Println(num + num1)
  fmt.Println(arg[0] + arg[1])
  return arg[1]
}

数组

var Numbers [5]int = [5]int{1, 2, 3, 4, 5}
 for i := 0; i < len(Numbers); i++ {
  fmt.Println(Numbers[i])
 }
 for _, v := range Numbers {
  fmt.Println(v)
 }
 //数组做为函数参数func play(num [5]int){}

二维数组:var 数组名 [ x ][ y ] 类型

 var arr [2][3]int = [2][3]int{{1, 2, 3}, {5, 6, 7}}
 var arr1 [2][3]int = [2][3]int{{1, 2}, {6}} // 部分初始化
 var arr2 [2][3]int = [2][3]int{0: {1: 6}}   // 指定元素初始化
通过初始化确定二维数组行数
 arr3 := [...][3]int{{1, 2, 3}, {5, 6}} // 行的下标可以用"..."来代替,但是列的下标不能用"..."来代替。
 fmt.Println(arr)                       //[[1 2 3] [5 6 7]]
 fmt.Println(arr1)                      // [[1 2 0] [6 0 0]]
 fmt.Println(arr2)                      //[[0 6 0] [0 0 0]]
 fmt.Println(arr3)                      //[[1 2 3] [5 6 0]]
 fmt.Println(len(arr))                  //几行
 fmt.Println(len(arr[0]))               //几列
 for i := 0; i < len(arr); i++ {
  for j := 0; j < len(arr[0]); j++ {
   fmt.Println(arr[i][j])
  }
 }
 for _, v := range arr {
  for j, data := range v {
   fmt.Println(j)    //每行索引
   fmt.Println(data) //对应数值
  }
 }

切片:也称动态数组,但是不是数组

s := make([]int, 3, 5) //长度len3,容量cap5
 fmt.Println(s)
 fmt.Println(len(s)) // 长度不能大于容量。容量可以省略,省略后容量和长度是相同的
 fmt.Println(cap(s))
 s = append(s, 1, 2, 3, 4, 5) //append拼接s和后面一串,称函数追加值
 s = append(s)//也可以不追加,此时相当于对s里面的元素进行初始化为0
 // s[3] = 88
 fmt.Println(s[3])
 fmt.Println(s)

map

var m map[int]string = map[int]string{1: "张三", 2: "李四", 4: "llll"} //定义+初始化
 m1 := make(map[string]int, 10) //定义
 m1["张三"] = 12//初始化
 fmt.Println(m)//map[1:张三 2:李四]
 fmt.Println(m1) //map[张三:12]
 fmt.Println(len(m)) // len()返回的是map中已有的键值对个数。
 fmt.Println(m[4])
//map作为函数参数func PrintMap(m map[int]string) {}

结构体

type Student struct {
  id    int
  name  string
  age   int
  addr  string
  isStu bool
 } //注意,默认整型初始化为0,bool初始化为false,字符初始化为" "
 var s Student = Student{101, "张三", 18, "北京", false} //不能省略任何一个值
 fmt.Println(s)                                      //{101 张三 18 北京}
 var s1 Student = Student{name: "张三", age: 18}
 fmt.Println(s1) //{0 张三 18 北京}
 var s2 Student
 s2.age = 19
 s2.name = "s2"
 fmt.Println(s2) //{0 s2 19 }

结构体数组

 var arr [3]Student = [3]Student{
  Student{101, "张三", 18, "北京", false},
  Student{102, "李四", 18, "北京", false},
  Student{103, "王五", 19, "北京", false},
 }
 fmt.Println(arr)
 结构体切片var arr []Student = []Student{}、
 结构体map m := make(map[int]Student)
 m[1] = Student{101, "张三", 18, "北京",false}
 m[2] = Student{102, "李四", 18, "北京",false}
 结构体作为函数参数
 func PrintDemo(stu Student) {
  stu.age = 20
  fmt.Println(stu) // {101 张三 20 北京}
 }

指针

var a int = 10
 var p *int
 fmt.Println(p) //未赋值前为空指针
 p = &a
 fmt.Println(&a) //0xc000128058
 fmt.Println(p)  //0xc000128058引用地址
 fmt.Println(&p) //0xc00014c018指针地址
 fmt.Println(*p) //10
 var p1 *int = new(int)
 *p1 = 67
 fmt.Println(*p1) //67

指针作函数参数

func update(p *int){
 }

数组指针

nums := [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
 var p2 *[10]int
 p2 = &nums
 fmt.Println(*p2)

指针数组

var p3 [2]*int = [2]*int{new(int), new(int)}
 *p3[0] = 1
 *p3[1] = 2
 fmt.Println(p3)     //[0xc000014098 0xc0000140b0]
 fmt.Println(*p3[0]) //1

切片指针

s := []int{1, 2, 3, 4, 5, 6}
 var p *[]int
 p = &s
 fmt.Println(*p)      //[1 2 3 4 5 6]
 fmt.Println((*p)[0]) //1

结构体指针

stu := Student{101, "张三", 18, "北京", false}
 var p *Student
 p = &stu
 fmt.Println(*p) //{101 张三 18 北京 false}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值