go学习笔记(一)

变量声明

1.变量需要声明再使用

2.同一作用域不支持重复声明

3.变量声明后必须使用

4.可以批量声明变量

//var 变量名 变量类型
var s string
//批量声明

var (
a string
b int
c bool
...
)

5.可以声明变量同时赋值(可类型推导,不用声明类型)

var s1 string = “hahaha”
var s2 = "hahaha" //类型推导
s3 := "hahaha" //简短变量声明,仅可用于函数内中

6.匿名变量:多重赋值时,忽略某个值,用下划线 _表示。 不占用命名空间-不分配内存-无重复声明-不产生不使用报错的情况

package main
import "fmt"
func qqq( )(int,string){
return 1,"qqq"
}
func main() {
x,_:=qqq()
y,_:=qqq()
fmt.Println("x=",x)
fmt.Println("y=",y)
}
-------
x= 1
y= 1

注意

1.函数外语句必须以关键字开始

常量

const 常量名 = 常量值

1.在程序运行期间不会改变 2.定义了之后不能修改

批量声明

//某一行没赋值,表明同上一行
const(
a = 1
b
c
)

iota 常量计数器

1.const出现时被重置未0 2.每新增一行常量声明,iota增加1 (类似枚举)

const(
a = iota //0
b //1
c //2
)

 

基本数据类型

整型

分为有符号(int)和无符号(uint)

int8  // 0 ~ 255,byte型
int16 // 0 ~ 65535
int32 //
int64 //
int8 // -128 ~ 127
int16 // -32768 ~ 32767 ,对应C语言中的 short 型
int32 // -2147483648 ~ 2147483647 , 对应C语言中的 long 型
int64 // -9223372036854775808 ~ 9223372036854775807

特殊整型

intuint 在不同平台时会有区别

uintptr 无符号整型,用于存放一个指针

进制转换

func main(){
var a = 100
fmt.Printf("%b\n",a) //二进制
fmt.Printf("%d\n",a) //
fmt.Printf("%o\n",a) //八进制
fmt.Printf("%x\n",a) //十六进制
}

浮点型

支持 float32 和 float64 两种,默认go语言中小数都是float64.

复数

complex64complex128 复数有实部和虚部,complex64的实部和虚部为32位,complex128的实部和虚部为64位.

布尔值

bool,true(真)false(假)两个值

注意: 1.布尔类型值默认false 2.不允许整型强制转换成布尔型 3.无法参与数值运算,也无法转换

字符串

go中双引号包裹字符串,单引号包裹字符

转义符 \r \n \t 等等

多行字符串,使用反引号

a := `第一行
第二行
第三行
`
fmt.Println(a)

字符串常用操作

len(str)  //求长度
+ 或 fmt.Sprintf //拼接
strings.Split //分割
strings.contains //判断包含
strings.HasPrefix,strings.HasSuffix //前后缀判断
strings.Index(),strings.LastIndex() //定位
strings.Join(a[]string, sep string) //join操作

Go 语言的字符有以下两种:

  1. uint8类型,或者叫 byte 型,代表了ASCII码的一个字符。

  2. rune类型,代表一个 UTF-8字符

修改字符串

要先将其转换成[]rune[]byte,完成后再转换为string

func main(){
A := "asd"
byte1 := []byte(A)
byte1[0] = 'a'
fmt.Println(string(byte1))

B := "好好学习天天向上"
rune1 := []rune(B)
rune1[0] = '学'
fmt.Println(string(rune1))
}

类型转换

没有隐式类型转换,仅支持强制类型转换类型断言

 

强制类型转换

T(表达式)

注意:指针的强制类型转换需要用到unsafe包中的函数实现

 

类型断言

package main

import "fmt"

func main() {
   var a interface{} =10
   switch a.(type){
   case int:
           fmt.Println("int")
   case float32:
           fmt.Println("string")
  }
}

 

 

 

上一篇:使用gin实现ip拦截器


下一篇:JAVA课程笔记系列:基于Springboot 的thymeleaf模板引擎