Golang 基础语法-基本变量(2)

Golang 基础语法-基本变量(2),第1张

概述Golang 基础语法-基本变量(2) 变量的零值说明 数值类型变量的零值为 0 布尔类型变量的零值为 false 字符串类型变量的零值为 "” 变量的类型转换语法 golang 中不同类型之间的变量赋值需要显式的转换 //语法格式 T(v) 将 v 转换为 类型 Tvar i int = 32var f float64 = float64(i)var u uint = uint(64) 变 Golang 基础语法-基本变量(2) 变量的零值说明 数值类型变量的零值为 0 布尔类型变量的零值为 false 字符串类型变量的零值为 "” 变量的类型转换语法

golang 中不同类型之间的变量赋值需要显式的转换

//语法格式 T(v) 将 v 转换为 类型 Tvar i int = 32var f float64 = float64(i)var u uint = uint(64)
变量的定义(声明)

使用 var 声明
无论在函数内还是函数外,都可以使用 var 声明变量

基本语法格式为:
var varname varType
var varname = varValue
var varname1,varname2 varType
var varname1,varname2 = varValue1,varValue2

在基本语法格式上可以进行一些灵活组合,但是建议不要用花哨的语法

//声明但是不初始化(foo 的值为对应变量类型的零值)var foo int;//声明且初始化(var声明初始化的时候不需要指定变量类型,编译器自动根据初始化值确定变量类型)var bar  = 3 //推荐写法var bar int = 3 //合法但是不推荐//声明 i1,i2 为 int 类型(初始值为 int 类型的零值 0)var i1,i2 int//声明 i1 和 i2同时赋值为1,2var i1,i2 = 1,2//声明 int 类型的 i1,string 类型的 s1var i1,s1 = 1,"a"//声明一组全局变量,变量可以初始化或者不初始化var(    i1,2    i3,i4 int    s1 = "111221"    b1 = true)

快捷语法
只能在函数体内使用快捷语法,函数体外非法

语法格式
varname1 := varValue1

func main(){    //声明变量 i1并且同时给变量赋值    i1 := 1    //声明变量 i2,s1并且同时给他们赋值    i2,s1 := 1,"11"}

var声明和快捷语法声明需要注意的地方

便捷声明方法是声明一个新的变量且赋值,不能用作给 var 声明的变量赋值

var foo = 1func main(){    foo := 10    //输出10 使用的局部变量取值    fmt.Println(foo)    //PS: 一定要注意下面有语法错误    var bar int    bar := 11   //便捷方式其实是先声明一个新变量然后给赋值,但是此时 bar 变量已经存在了不能重复定义}
特殊变量 _

变量 _ 用来抛弃忽略某个值,golang 中不允许存在没有使用的变量

函数多返回值抛弃

_,r := divIDe(10,3)

导入包不使用(但是会调用导入包的 init方法)

import(    "fmt"    _ "os")
常量

常量是指变量一旦定义,在编译阶段它的值就是确定了的,在运行阶段是不可以被改变的,golang 中 number|boolean|string 类型可以定义为常量

定义语法
const constantname = value
cosnt constantname constantType = value

const PI = 3.14const Pi float32 = 3.14156
变量类型

golang 中的 基本变量类型主要为 number,bool,string等

Boolean

关键词 bool 用于定义 boolean类型变量,boolean 类型变量的取值只有 truefalse,零值(默认值)为 false
golang 不允许把 boolean 类型转变为数字类型

数字类型(Numerrical) Integers

golang 不允许类型不同的变量进行运算,例如 int8类型的变量和 int32类型的变量不能进行加法 *** 作

signed

int 长度取决于 *** 作系统,32位 *** 作系统是32位,64位 *** 作系统是64位 rune 它是int32的别名 int8 int16 int32 int64

unsigned

uint byte 它是 uint8的别名 uint8 uint16 uint32 uint64 浮点型

注意没有 float 这个类型

float32 float64 复数(Complex) complex128 complex64 字符串(string)

goalng 使用 UTF-8作为编码结合,使用 " 或者 ` 包裹起来的字符就是一个 string
` 定义多行字符串

var s1 = "hello"var s2 = `helloword`

string 对象不允许改变值(但是可以给重新赋值),下面的语法错误

var s = "hello"s[0] = 'c'

如果要改变一个变量的值,需要使用旧的变量创建

s := "heloo"c := byte(s) //string 转换为[]byte 类型c[0] = 'c's2 := string(c) //把 c []byte 转为 stringfmt.Printf("%s\s\n",s2)

+ 可以用来拼接两个字符串

s := "hello,"m := "world"a := s + mfmt.Printf("%s\n",a)//输出 "cello,"s = "c" + s[1:] //返回 "c" + s从索引1到结束的字符串拼接
Error(golang 内置,其他语言没有的)

golang没有 try-catch 语句块处理异常,内置了 error 类型用于处理错误

err := errors.New("some error messaage")if err != nil {    //Todo something}
其他

分组定义
如果你想定义多个常量,变量或者导入多个包,可以使用分组格式

//以下是非分组形式import "fmt"import "os"const i = 100const pi = 3.145var i intvar pi float32var prefix string//分组形式import(    "fmt"    "os")const(      pi = 3.145    prefix = "GO")var(    pi float32    prefix string)

iota 枚举

关键字 iota 可以生成枚举类型,枚举值从0开始,每次加1

const(        //x == 0        x = iota        //y == 1        y = iota         //z == 2        z = iota         //如果常量名称后面没有任何表达式        //则 w 等价于 w = iota,w == 3        w    )    const v = iota //v == 0    //PS 注意在同一行时的 iota 特殊情况    const(        //如果 iota 在同一行,则 e == f == g == 0        e,f,g = iota,iota,iota     )

变量的可见性

任何以大写字母开头的变量都是可以被导出的,即在包外能被访问, 函数或者常量大写字母开头的,也是可以被导出的,包外可以访问的 golang 中没有 public 或者 private 来控制变量函数常量等的可见性,通过变量函数常量的名称的首字母是否大小写来判断
package test//Foo 在包 test 之外可以通过 test.Foo 访问var Foo//bar 在包 test 之外通过 test.bar 访问是错误的,因为它的首字母是小写,包外不可见var bar//函数在test 包外可以使用 test.Test1()访问func Test1(){}//函数在 test 包外不可以通过 test.test2()访问,只可以在包内使用func test2(){}//包外使用 test.I访问Const I = 1// j 不可以在包外通过 test.j 访问cont j = 10
总结

以上是内存溢出为你收集整理的Golang 基础语法-基本变量(2)全部内容,希望文章能够帮你解决Golang 基础语法-基本变量(2)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1272741.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存