GO 第一 变量

GO 第一 变量

一、变量定义说明

1.打印hello world

1.1.导入fmt包,打印hello world

package main

func main() {
    fmt.Println("hello world!")
}

1.2.查看结果

GO 第一 变量

2.定义变量

2.1.变量名在前,变量类型在后

不定义值,int 默认是0,string 默认是空串

package main

func varckl()  {
    var a int
    var s string
    fmt.Println(a,s)
}
func varckl()  {
   
var a int
var s string
fmt.Printf("%d %q\n",a,s)
}

2.2.查看结果

GO 第一 变量

 3.变量赋值初始值

3.1.赋值赋值初始值

package main

func varintval()  {
    var a, b int = 3, 5
    var s string = "nogh"
    fmt.Println(a,b,s)
}

func main() {
   
varintval()
}

3.2.运行结果

GO 第一 变量

4.变量不定义类型

4.1.go语言自动判断变量类型,无须定义

package main

func varTypeDeduction(){
    var a, b, c, s = 3 ,4 ,true,"dem"
    fmt.Println(a,b,c,s)
}

func main() {
   
varTypeDeduction()
}

4.2.查看结果

GO 第一 变量

5.更简单的变量定义

5.1.更简单的变量定义

可以省略var 将“=”替换为“:=”,简单写法第一次必须使用”:=”,后面再赋值,则直接”=”

package main

func varShort()  {
    //只能在函数内使用
    a, b, c, s := 7,8,true,"haha"
    fmt.Println(a,b,c,s)
}

func main() {
   
varShort()
}

5.2.查看结果

GO 第一 变量

6.函数外定义变量

6.1.定义变量在函数外

go没有全局变量,定义在函数外的变量,作用在包内

package main

//作用在main包内
var aa = 3 var bb = 4 var ss = "hi" func main() { fmt.Println(aa,bb,ss) }

6.2.执行结果

GO 第一 变量

7.包内变量简单写法

7.1.简单写法

用一个var来集中定义

package main

var (
    mm = 9
    kk = 2
    tt = "sk"
)

func main() {
    fmt.Println(mm,kk,tt)
}

7.2.查看结果

GO 第一 变量

二、内建变量类型

1.变量类型说明

bool、string、

整数类型:(u)int (u)int8 (u)int16 (u)int32 (u)int64 

u:无符号整数

无u:有符号整数

无符号整数两类:

  •  规定长度int8 int32 int64等
  •  不规定长度,根据系统来

uintptr:指针

byte:字节,长度8位

rune:字符型,go语言的char类型,长度32位

浮点类型:float32 float64

复数:complex64 complex128

2.小程序测试

2.1.欧拉公式

package main

import (
"fmt"
"math/cmplx"
"math"
)

func euler() { c :
= 3 + 4i fmt.Println(cmplx.Abs(c)) } func main() { euler() }

2.2.查看结果

GO 第一 变量

3.强制类型转换

类型转换是强制的

3.1.三角形求边

package main

import (
"fmt"
"math/cmplx"
"math"
)

func triangle()  {
    var a, b int = 3, 4
    var c int
    //c = math.Sqrt(a * a + b * b)
    //Sqrt需要一个float64,int 强制转为float64
    c = int(math.Sqrt(float64(a * a + b * b)))
    fmt.Println(c)
}

func main() {
    triangle()
}

3.2.运行结果

GO 第一 变量

 三、常量

1.常量定义

1.1.常量定义程序

package main

import (
    "fmt"
    "math/cmplx"
    "math"
)

func consts()  {
    const filename = "ckl.txt"
    const a,b = 3,4
    var c int
//a b 不定义类型,既可以做int 又可以做float,因此不需要转换 c
= int(math.Sqrt(a*a + b*b)) fmt.Println(filename,c) } func main() { consts() }

1.2.运行结果

GO 第一 变量

1.3.变量简便写法

func consts()  {
    const (
        filename = "ckl.txt"
        a,b = 3,4
    )    
    var c int
    c = int(math.Sqrt(a*a + b*b))
    fmt.Println(filename,c)
}

const 数值可作为各种数值使用

2.特殊常量

2.1.枚举类型举例

package main

func enums()  {
    const(
        cpp = 1
        java = 2
        python = 3
        golang = 4
    )
    fmt.Println(cpp,java,python,golang)
}

func main() {
    enums()
}

2.2.运行结果

GO 第一 变量

2.3.另外简单的写法

通过iota自增写法

func enums1()  {
    const(
        cpp = iota
        java
        python
        golang
    )
    fmt.Println(cpp,java,python,golang)
}

2.3.1.运行结果

GO 第一 变量

2.3.2.修改内容

func enums1()  {
    const(
        cpp = iota
        _
        python
        golang
        javascript
    )
    fmt.Println(cpp,java,python,golang)
}

查看结果

GO 第一 变量

 2.3.3.其它用法

    const(
               //1 左移后面的位
        b = 1 << (10 * iota)
        kb
        mb
        gb
        tb
        pb
    )
    fmt.Println(b,kb,mb,gb,tb,pb)

查看结果

GO 第一 变量

 四、条件语句

1.if 判断

1.1简单if判断程序

1.1.1.如果,文件正常,返回内容,否则返回错误信息

package main

import (
    "io/ioutil"
    "fmt"
)

func main() {
    const filename  = "ckl.txt"
    //ReadFile会返回两个值,所以定义两个变量来接收
    contents,err := ioutil.ReadFile(filename)
    if err != nil {
        fmt.Println(err)
    } else {
        fmt.Printf("%s\n",contents)
    }
}

1.1.2.运行结果

GO 第一 变量

找不到文件,因为没有建立

1.1.3.新建立一个文件

GO 第一 变量

GO 第一 变量

1.1.4.运行程序查看

GO 第一 变量

1.1.5.简单写法

package main

import (
    "io/ioutil"
    "fmt"
)

func main() {
    const filename  = "ckl.txt"
    //ReadFile会返回两个值,所以定义两个变量来接收
    if contents,err := ioutil.ReadFile(filename);err != nil {
        fmt.Println(err)
    } else {
        fmt.Printf("%s\n",contents)
    }
}

1.1.6.运行结果

GO 第一 变量

 1.1.7.这种写法无法访问到里面内容

因为contents只有在if 的block里面才有作用

func main() {
    const filename  = "ckl.txt"
    //ReadFile会返回两个值,所以定义两个变量来接收
    if contents,err := ioutil.ReadFile(filename);err != nil {
        fmt.Println(err)
    } else {
        fmt.Printf("%s\n",contents)
    }
    fmt.Println(contents)
}

2.switch 语法

2.1.switch 默认会加break,无须手动添加,如果不需要break,则使用fallthrough

2.1.1.简单的switch小程序

package main

import "fmt"

func eval(a,b int,op string) int {
    var result int
    switch op {
    case "+":
            result = a + b
    case "-":
        result = a - b
    case "*":
        result = a * b
    case "/":
        result = a / b
    default:
        panic("unsupported operator:" + op)
    }
    return result
}

func main() {
    var want = eval(10,9,"+")
    fmt.Println(want)
}

2.1.2.运行结果

GO 第一 变量

 2.2.switch不定义表达式

2.2.1.switch 不定义表达式的小程序

package main

import "fmt"

func grade(score int) string {
var g = ""
switch {
case score > 100 || score < 0:
panic(fmt.Sprintf("%d is not a correct number",score))
case score < 60:
g = "D"
case score < 75:
g = "C"
case score < 85:
g = "B"
case score <= 100:
g = "A"
}
fmt.Println(g)
return "finish"
}

func main() {
grade(53)
grade(67)
grade(79)
grade(89)
}

2.2.2.运行结果

GO 第一 变量

2.2.3.运行一个错误的分数

func main() {
    grade(53)
    grade(67)
    grade(79)
    grade(89)
    grade(101)
}

运行结果

GO 第一 变量

 

转载于:https://www.cnblogs.com/ckl893/p/8639721.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101750.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • CCriticalSection的使用

    CCriticalSection的使用CCriticalSection是对关键段CRITICAL_SECTION的封装。 关键段(critivalsection)是一小段代码,他在执行之前需要独占对一些共享资源的访问权。这种方式可以让多行代码以“原子方式”来对资源进行操控。这里的“原子方式”,指的是代码知道除了当前线程之外没有其他任何线程会同时访问该资源。当然,系统仍然可以暂停当前线程去调度其他线程。但是,在当前线程离开关键

    2022年7月20日
    39
  • 固态硬盘不能恢复吗_固态硬盘资料能恢复吗

    固态硬盘不能恢复吗_固态硬盘资料能恢复吗固态硬盘(SSD)凭借超高速的读写速度在高端玩家中颇受欢迎,但是SSD硬盘也暴露出一些不成熟的表现,之前已有过固件门、性能下降等例子。Techgage网站最新的测试显示SSD硬盘在数据恢复方面遇到了新的挑战,这一问题在支持TRIM指令的固态硬盘上尤为严重。有鉴于此,编辑将这篇文章编译过来希望能引起玩家的重视。目前这一问题还没有别的评测加以佐证,笔者手头也没有固态硬盘可重复验证,希望正在使用固态硬盘

    2022年9月19日
    0
  • 版本号/缓存刷新 laravel mix函数

    版本号/缓存刷新 laravel mix函数

    2021年10月23日
    42
  • Ubuntu 22.04 LTS 新系统环境配置[通俗易懂]

    Ubuntu 22.04 LTS 新系统环境配置[通俗易懂]目录一、安装wps二、截图工具flameshot三、必备中文输入法fcitx-googlepinyin安装四、python3环境五、解决ssh环境恢复遇到问题搜索wpslinux版本,下载到最新版本,进入到deb包下载目录,执行安装命令。WPSOffice2019forLinux-支持多版本下载_WPS官方网站WPSOfficeForLinux,支持不同格式多版本WPSForLinux版下载,实现多人在线协同办公。https://linux.wps.cn/sudodpkg-ixxx

    2022年9月4日
    2
  • lua软件下载_lua new

    lua软件下载_lua newlua(www.lua.org)其实就是为了嵌入其它应用程序而开发的一个脚本语言,luajit(www.luajit.org)是lua的一个Just-In-Time也就是运行时编译器,也可以说是lua的一个高效版。二、优势1)lua是一个免费、小巧、简单、强大、高效、轻量级的嵌入式的脚本语言,lua当前的发行版本5.3.1只有276k。2)它是用C语言开发的项目,所以可以在大部分的…

    2022年10月6日
    0
  • 实体关系抽取实战_知识图谱实体关系抽取

    实体关系抽取实战_知识图谱实体关系抽取前言本篇博客主要讲NLP中的关系抽取,聚焦点中文,没有过多理论,侧重实践(监督学习)。关于实体关系抽取的技术发展脉络,感兴趣的可以看一下:https://www.cnblogs.com/theodoric008/p/7874373.html关系抽取有限定关系抽取和开放关系抽取,这里主要说限定关系抽取即分类问题其过程常常又有监督学习和半监督学习,这里主要讲利用深度学习进行的监督学…

    2025年8月1日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号