3.Go语言变量与常量

基本结构说明

package main //包定义,main是生成可执行文件,其他的是提供给别人使用的类包
import "fmt" //导入语句,使用双引号包裹
//函数外面,只能做声明,而不能写逻辑语句
func main() {//main包一定要有一个main函数,是程序的入口函数,没有参数也没有返回值
    fmt.Println("hello word")
}

标识符

go语言中标识符由字母数字下划线组成,并且只能以字母和下划线开头。比如_12,abc,a123,a_1

关键字

特殊含义的标识符,关键字和保留字都不建议作为变量名。
go语言中有25个关键字,37个保留字。
https://learnku.com/go/t/46645

常量

恒定不变的值。多运用于运行期间不会改变的值。
常量在定义的时候必须赋值。

//单个定义
const pi = 3.14
//批量定义
const (
    pi = 3.14
    e = "test"
)

const (
    n1 = 100
    n2
    n3   //批量声明常量,如果某一行没有赋值,默认和上面的值是一样的
)

iota

是go语言的常量计数器,只能在 常量的表达式中使用。

在const关键字出现时,会被重置为0,每声明 一行,计数一次

const (
    n1 = iota //0
    n2 //1
    n3 //2
    n4 //3
)
package main
import "fmt"
const (
    d1, d2 = 1 + iota, 2 + iota
    d3, d4 = 2 + iota, 3 + iota
)
func main() {
    fmt.Println(d1) //1
    fmt.Println(d2) //2
    fmt.Println(d3) //3
    fmt.Println(d4) //4
}

变量

1)为什么有变量

相当于我们的名字,定位准确

2)变量的类型

  • string
  • int
  • bool

3)变量声明

先声明再使用。

var a int : 声明一个变量,必须有类型

var name string
var age int
var isOk bool  // go语言中推荐使用小驼峰命名方式


//批量声明
var (
    name string
    age int
    isOk bool
)

//声明变量之后,变量是对应类型的空值

//赋值
name = "hello"

//变量声明了未使用,会编译失败。(全局的可以编译过去)

4)标准声明

var s1 string = "王小二" //声明变量并且同时赋值
var s2 = "王小二"  //类型自动推导
s3 := "哈哈哈" //简短声明,只能函数内使用

匿名变量:不占用内存
单独的下划线表示
x,
:= foo();

注意事项:
1.函数外的每个语句都必须以关键字开始(var const func等)
2. := 不能在函数外使用
3. _ 表示占位,忽略值
4. 用一个作用域中不能重复声明同一个变量。

5)基本数据类型

基本数据类型: 整型、浮点型、 布尔型、字符串、
复杂的数据类型:数组、切片、结构体、函数、map、通道

整型
  • 1.带符号的整数类型:int8\int16\int32\int64
  • 2.不带符号的整数: uint8\uint16\uint32\uint64
  • 3.特殊整型:uint、int根据操作系统; uintptr 无符号整型用于存放一个指针。注意不同操作系统上的兼容问题。

八进制数和十六进制数:

八进制数前缀为0

var b int = 077

十六进制数,前缀0X

var b int = 0xff

%s表示字符串
%d表示十进制数
%o表示八进制数(文件权限)
%x表示十六进制数(内存地址)
%b表示二进制数据
%T表示数据类型

fmt.Printf("%d", d1) d1 //不同进制的数字在打印的时候会转换为10进制的数字输出

上面的数都是int类型的
怎么查看变量的类型

浮点型
  • float32
  • float64

两个类型的变量不能互相赋值,两个数据的类型完全不同。go属于强类型语言

复数

用的比较少,一般用于搞科学运算
复数有实部和虚部,

z = a+bi

a 称为实部,b 称为虚部,i 称为虚数单位

complex64
complex128

package main
import "fmt"
var c1 complex64
var c2 complex128
func main() {
    c1 = 1 + 2i
    c2 = 2 + 3i
    fmt.Printf("%T", c1) //complex64
    fmt.Printf("%T", c2) //complex128
}
布尔型

声明之后的默认值是fasle
不允许将整数强转布尔型
不能与其他类型转换

fmt占位符总结

  • %T查看变量类型
  • %v 查看变量值
  • %#v 查看变量值带有类型的标识符
  • %d查看数字十进制
  • %b查看数值二进制
  • %o查看数值 的八进制
  • %x查看数值 的十六进制
  • %s 字符串
字符串

默认utf-8编码,支持中文。定义字符串变量时只能使用双引号包裹起来,单引号的是字符


package main
import (
    "fmt"
    "strings"
)
func main() {
    c1 := "测试"
    c2 := '你'
    c3 := `你 是
    谁`
    fmt.Printf("%T", c1) //string
    fmt.Printf("%T", c2) //int32
    fmt.Printf("%v", c3) //原样输出
    //字符串拼接
    fmt.Println(c1 + c3) //字符串加号连接输出,不能与c2连接因为是int32类型的
    ss := fmt.Sprintf("%s%s", c1, c3)
    fmt.Printf("%v", ss) //输出函数拼接的结果
    //字符串分割
    ret := strings.Split(ss, "你")
    fmt.Printf("%T", ret) //[]string
    //字符串内的包含
    fmt.Println(strings.Contains(ss, "你")) //true
    //判断字符串前缀
    fmt.Println(strings.HasPrefix(ss, "测试")) //true
    //判断字符串前缀
    fmt.Println(strings.HasSuffix(ss, "测试")) //false
    //子串的位置
    fmt.Println(strings.Index(ss, "试")) //3
    //子串的最后出现位置
    fmt.Println(strings.LastIndex(ss, "试")) //3
    //拼接
    fmt.Println(strings.Join(ret, "试")) //3
    //遍历字符
    for _, c := range c1 {
        fmt.Printf("%c\n", c)
    }
    //修改字符串。字符串不能修改,修改的时候转换为另外一种类型去修改。
    slices := []rune(c1) //切片里面保存的 是字符的集合
    slices[1] = '焕'
    fmt.Println(string(slices))
}


字符串转义符号
\r 回车
\n 换行

类型转换

整型、浮点型互转
字符串和字符转换

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值