Go语言基础

Go语言

一个项目中运行多个main文件:run–>Edit Cofigurations…–>Run kind 选择File

Go语言基础语法

变量

helloword
package main

import "fmt"

func main() {
   fmt.Println("hello world")
}
定义变量
package main

import "fmt"

func main() {
   var name string = "shengsan"

   var (
      age int
      sex string
   )

   age = 18
   sex = "男"
   fmt.Println(name, age, sex)
}
语法糖定义变量
package main

import "fmt"

func main() {
   name := "圣三"
   age := 18

   fmt.Println(name, age)
   fmt.Printf("%T, %T", name, age) // %T 是类型的意思
}
打印内存地址
package main

import "fmt"

func main() {
	var num int
	num = 100
	fmt.Printf("num:%d,内存地址:%p", num, &num) // & 取地址符

	num = 200
	fmt.Printf("num:%d,内存地址:%p", num, &num) // %p取地址 & 取地址符
	// 地址一样
}

交换变量的值
package main

import "fmt"

func main() {
   // 其他语言
   // a = 10
   //b = 200
   //temp = 0
   //temp = a
   //a = b
   //b = temp

   // go 语言
   var a int = 100
   var b int = 200

   b, a = a, b // 不需要中间变量,直接交换即可
   fmt.Println(a, b)
}
匿名变量
package main

import "fmt"

func test() (int, int) {
   return 100, 200
}

func main() {
   a, _ := test() // _ 匿名变量,多次定义不会重复,里面的内容会直接被丢弃
   fmt.Println(a)
}
变量作用域
  • 局部变量可以和全局变量同名,但是运行的时候会有就近原则。

  • package main
    
    import "fmt"
    
    var name = "全局变量"
    
    func main() {
       name := "局部变量"
       fmt.Println(name) // 打印局部变量
       test2()
    }
    
    func test2() {
       fmt.Println(name) // 打印全局变量
    }
    
常量 const
package main

import "fmt"

func main() {
   const URL string = "www.kuangstudy.com" // 显式定义
   const URL2 = "www.kuangstudy.com"       // 隐式定义

   const a, b, c = 3.14, "shengsan", false //定义不同类型的多个变量

   fmt.Println(URL)
   fmt.Println(URL2)
   fmt.Println(a, b, c)

}
特殊常量iota
  • iota,特殊常量,可以认为是一个可以被编译器修改的常量。iota是go语言的常量计数器

  • iota在const关键字出现时将被重置为0(const内部的第一行之前),const中每新增一行常量声明将使iota计数一次(iota可以理解为const语句块中的索引)

  • package main
    
    import "fmt"
    
    func main() {
       const (
          a = iota   //iota = 0
          b          //iota = 1
          c          //iota = 2
          d = "haha" //haha iota = 3
          e          //haha iota = 4
          f = 100    //100  iota = 5
          g          //100  iota = 6
          h = iota   //iota = 7
          i          //iota = 8
       )
    
       const (
          j = iota //iota = 0
          k        //iota = 1
       )
       fmt.Println(a, b, c, d, e, f, g, h, i, j, k)
    }
    

基本数据类型

bool类型(默认false)
  • %T 数据的类型 %t数据的值 \n 换行

  • package main
    
    import "fmt"
    
    func main() {
       // var 变量名 数据类型
       // bool :true false
       // bool 默认类型 false
       var isFlag bool = true
    
       fmt.Println(isFlag)
    
       fmt.Printf("%T,%t\n", isFlag, isFlag) // %T 数据的类型 %t数据的值 \n 换行
    }
    
数字型
  • int

  • float64默认打印六位小数

  • byte类似uint8 范围 0~255

  • package main
    
    import "fmt"
    
    // int
    // float64默认打印六位小数
    // byte类似uint8 范围 0~255
    func main() {
       // int
       var age int = 18
       // float64 默认打印6位
       var money float64 = 3.14
       // byte 类似uint8 范围 0~255
       var num = 20
    
       fmt.Printf("%T,%d\n", age, age)     // %d 数值类型
       fmt.Printf("%T,%f\n", money, money) // %f 浮点类型  %.2f表示输出两位小数,但是会丢失精度
       fmt.Printf("%T,%d\n", num, num)
    }
    
字符串
  • 单引号:字符,整型-ASCII编码

  • 编码表 ASCII编码

  • 扩展

    • 所有的中国字的编码表:GBK
    • 全世界的编码表:Unicode编码表
  • package main
    
    import "fmt"
    
    func main() {
       var str string = "shengsan"
       fmt.Printf("%T,%s\n", str, str)
    
       // 单引号:字符,整型-ASCII编码
       v1 := 'A'
       v2 := "A"
    
       // 扩展:
       // 所有的中国字的编码表:GBK
       // 全世界的编码表:Unicode编码表
       fmt.Printf("%T,%d\n", v1, v1) // int32 65
       fmt.Printf("%T,%s\n", v2, v2)
    
       // 字符串的拼接 +
       fmt.Println("hello" + "shengsan")
    
       // 转义字符 \
       fmt.Println("hello\"shengsan")
       fmt.Println("hello\tshengsan") // \t制表符
    
    }
    
数据类型转换

Go语言中不存在隐式类型转换,所有的类型转换都是显示的

  • 转换后的类型 := 要转换的类型(变量)

  • package main
    
    import "fmt"
    
    // 类型转换
    // 转换后的类型 := 要转换的类型(变量)
    // 备注:整形不能转换为bool类型
    func main() {
       a := 5   // int
       b := 3.0 // float64
    
       // int 转换为 float64  类型转换
       c := float64(a)
    
       fmt.Printf("%T\n", a)
       fmt.Printf("%T\n", b)
       fmt.Printf("%T\n", c)
    
    }
    

运算符

算数运算符
符号描述
+
-
*
/
%
++
关系运算符
符号描述
==
!=
>
<
>=
<=
逻辑运算符
符号描述
&&逻辑and运算符
||逻辑or运算符
!逻辑not运算符
位运算符(二进制)

Go语言支持的位运算符如下表所示。假定A为60,B为13:

运算符描述实例
&按位与运算符"&"是双目运算符。都是1结果为1,否则是0(A & B)结果为12,二进制为0000 1100
|按位或运算符"|"是双目运算符。都是0结果为0,否则是1(A | B)结果为61,二进制为0011 1101
^按位异或运算符"^"是双目运算符。相同为0,不同为1(A ^ B)结果为49,二进制为0011 0001
&^位清空,a &^ b, 对于b上的每个数值,如果为0,则取a对应位上的数值,如果为1,则取0(A &^ B)结果为48,二进制为0011 0000
<<左位移运算符"<<“是双目运算符。左位移n位,就是乘以2的n次方。其功能是把”<<“左边的运算数的各二进制全部左移若干位,由”<<"右边的数指定移动的位数,高位丢弃,地位补0。A << 2 结果为240,二进制为1111 0000
>>右位移运算符">>“是双目运算符。右位移n位,就是除以2的n次方。其功能是把”>>“左边的运算数的各二进制全部右移若干位,由”>>"右边的数指定移动的位数。A >> 2结果为15,二进制为0000 1111
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值