java转go(go语法的不同点)

本文记录了从Java转向Go语言的基础不同点,包括Go的编译运行命令、包管理、代码规范、数据类型、字符串处理、变量定义、控制结构、函数与方法、异常处理等方面。通过学习,有助于理解Go语言的独特之处。
摘要由CSDN通过智能技术生成

java转go,go语言基础的不同点

有java的语言基础,最近想试着转go,花两天时间学习了一下go的基础,做以下记录,加深印象
go语言基础学习视频

  1. [go语言标准库中文文档]( Go语言标准库文档中文版 | Go语言中文网 | Golang中文社区 | Golang中国 (studygolang.com) )

  2. go build XX.go编译

  3. go run xx.go 编译并运行

  4. 每个.go 文件都要有对应的包,主函数所在文件的包为package main , 否则无法运行

    在同一个文件下(同一级别)的.go文件声明包时都必须是同一个名字,否则会报错,主函数所在的包,包名必须为main
    
  5. 导入了其他包时,调用包下面的函数的语法:包名.函数名() ;或者在导包时给包取一个别名,用这个别名调用,这时不能再使用原来的包名调用函数,否则会报错

    //在某个文件夹下的某个.go文件如下:
    package utils
    func GetName(id int) (name string){
         
        name = "aaa"
        return
    }
    //在另一个文件夹下的主函数文件中调用utils包中函数的示例如下:
    package main
    import(
        "fmt"
        "xx/xx/xx/utils"
    )
    
    func main(){
         
        utils.GetName(5)
        fmt.Print("aaa")
    }
    
    //采用给包取别名的方式如下 :也就是说,要么就使用包名,要么使用别名
    package main
    import(
        "fmt"
        uu "xx/xx/xx/utils"
    )
    
    func main(){
         
        uu.GetName(5)//使用别名可以调用
        fmt.Print("aaa")
        
        utils.GetName(5)//这里会报错,不能使用原来的报名
    }
    
    
  6. go语言的语句结尾不需要写分号,可以写,但推荐不写

  7. go语言导入其他文件使用 import + 其他文件名的字符串形式 : 如基础头文件:import “fmt”

  8. go语言严格区分大小写

  9. 导入多个其他文件可以使用花括号:

    import(
        "fmt"
        "其他的文件名|文件地址"
    )
    
  10. 函数(方法)的定义使用func关键字

  11. go语言的代码块花括号的格式必须如下:

func main(){
   
    //codding
}

func main()
{
   
    //这种写法是错误的
}
  1. 变量的定义需要用到var ,且定义方法形式较多:

    var age int = 10 //变量名写在中间,类型写在后面
    
    var age1 int
    age1 = 10  // 定义后再赋值
    
    var age2 = 10 //直接赋值,程序根据赋值内容自动判断类型
    
    age3 := 10 //省略var的写法
    
    
  2. go有4大基本类型 , 分别是数据类型、字符类型、布尔类型、字符串类型

    1. 数据类型分为有符号类型和无符号类型 , 未赋值时的初始值默认为0,
      1. 有符号的数据基本类型:int , int8 , int16 , int32 , int64 , float32 , float64

      2. 无符号的数据基本类型:uint , uint8 ,uint16 , uint32 , uint64

        在32位的计算机中 int/uint类型为4个字节,在64位计算机中为8字节,

        上面的int8/uint8:8表示8位二进制,即1个字节长度 , 其他的16、32、64是一样的意思

    2. 字符类型,go语言使用byte来表示字符类型,与ASCII码相互对应,byte类型长度为一个字节,能表示255个字符 , 默认值为0
    3. 布尔类型,bool , 值域为true和false , 默认值false
    4. 字符串,go中字符串为基本数据类型,java中为字符串对象(注意区分) ,默认值为空字符串
  3. 变量的公有和私有,即java中的变量的public访问和private访问

    var Age = 10 // 变量名首字母大写 ,在其他的文件中可以通过导入该文件的方式访问该变量,相当于public
    
    var age = 11 // 变量名首字母小写 ,在其他的文件中不能访问 ,相当于private
    
  4. go语言中有些方法是会有两个返回值的,第一个返回值一般是我们想要的值,第二个为err错误值,不需要第二个字的时候可以用下划线去接收.

  5. go语言中没有用到的变量被定义以及没有用到的文件(包)被导入,程序执行会报错

    //如下代码 : 由于name未被使用 ,会因为 name变量的定义报错
    package main
    import "fmt"
    func main(){
         
        var age int = 10
        var name string = "1265"
        fmt.Println(age)
    }
    
    //如下代码 : 由于fmt包文件未被使用 ,会因为导入了该包而报错
    package main
    import "fmt"
    func main(){
         
    }
    
  6. 控制台输出

    fmt.Println()
    
  7. 控制台的输入

    //输入函数有Scanln() 和 Scanf()
    
    //Scanln()一次只能获得一个输入,其中需要传入一个用于接收控制台输入内容的地址 , 输入结束的标志为“回车”
    var age int
    fmt.Scanln(&age) // &age表示获取age变量的内存地址,此时从控制台获取一个数据类型,如果输入了其他类型的,程序不报错,但是不能成功接收该输入
    
    //Scanf()可以获得一个或多个输入,其中需要给定多个个参数,第一个为输入类型控制转义字符串 ,输入多个时用用空格分开; 第二位之后的参数都是对应第一个参数中用于接收输入的变量的地址
    var age1 int
    var name string
    var sex bool
    fmt.Scanf("%d %s %t" , &age1 , &name , &sex)
    
  8. 指针使用(java中没有指针)

    //指针中存放的是某一类型数据所在的内存空间的地址值(指针变量中只能存放地址)
    func main(){
         
        //指针定义
        var agePtr *int
        
        var age int = 10
        agePtr = &age //指向age变量的地址
        
        fmt.Println(*agePtr)//获取指针所指向地址的值
        
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莽晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值