Java转Go学习之旅 | 语法基础

语法基础

典型的 Go 文件布局

go 复制代码
package [子句]

[任何import语句]

[实际代码]

声明变量

go 复制代码
package main

import "fmt"

func main() {
	// 声明变量
	var quantity int
	var length, width float64
	var studentName string

	// 给变量赋值
	quantity = 6
	length, width = 8.17, 12.25
	studentName = "A.M"

	// 使用变量
	fmt.Println(quantity)
	fmt.Println(studentName)
	fmt.Println(length * width)
}

如果你事先知道变量的值是什么,可以在声明变量的同一行进行赋值:

go 复制代码
package main

import "fmt"

func main() {
	// 声明变量并赋值
	var quantity int = 6
	var length, width float64 = 8.17, 12.25
	var studentName string = "A.M"

	// 使用变量
	fmt.Println(quantity)
	fmt.Println(studentName)
	fmt.Println(length * width)
}

如果声明变量的同时为其赋值,通常可以在声明中省略变量类型:

go 复制代码
package main

import (
	"fmt"
	"reflect"
)

func main() {
	// 声明变量并赋值
	var quantity = 6
	var length, width = 8.17, 12.25
	var studentName = "A.M"

	// 使用变量
	fmt.Println(reflect.TypeOf(quantity))
	fmt.Println(reflect.TypeOf(studentName))
	fmt.Println(reflect.TypeOf(length))
	fmt.Println(reflect.TypeOf(width))
}

短变量声明

go 复制代码
package main

import (
	"fmt"
	"reflect"
)

func main() {
	// 声明变量并赋值
	quantity := 6
	length, width := 8.17, 12.25
	studentName := "A.M"

	// 使用变量
	fmt.Println(reflect.TypeOf(quantity))
	fmt.Println(reflect.TypeOf(studentName))
	fmt.Println(reflect.TypeOf(length))
	fmt.Println(reflect.TypeOf(width))
}
  • 不需要明确的声明变量的类型
  • 赋给变量的值的类型成为该变量的类型

命名规则

Go 简单的规则

  • 名称必须以字母开头,并且可以有任意数量的额外的字母和数字
  • 只有名称是以大写字母开头的变量、函数或类型才被认为是可导出的:可以从当前包之外的包访问 【这就是为什么fmt.Println中的P是大写的】
  • 命名通常采用驼峰命名,例如topPrice、RetryConnection

类型转换

go 复制代码
package main

import (
	"fmt"
	"reflect"
)

func main() {
	// 声明变量并赋值
	var quantity int = 6
	// 将quantity转换成float64类型
	var res = float64(quantity)
	
	// 使用变量
	fmt.Println(quantity)
	fmt.Println(reflect.TypeOf(quantity))
	fmt.Println(res)
	fmt.Println(reflect.TypeOf(res))
}
相关推荐
Wang's Blog3 分钟前
Java框架 SpringCloud 快速入门: Nacos 环境隔离
java·开发语言·spring cloud
一隅论数智10 分钟前
OWL(Web Ontology Language)介绍与使用举例(二)
大数据·经验分享·笔记·学习·自然语言处理·学习方法·政务
我命由我1234511 分钟前
Photoshop - Photoshop 使用内容识别填充移除对象
学习·职场和发展·产品运营·求职招聘·职场发展·学习方法·photoshop
万年咸鱼14 分钟前
解决C语言的内存释放机制
java·c语言·python
一木 之林30 分钟前
DeepSeek Agent 开发(三)
java·大数据·linux
denlaku1 小时前
JDK 10 新特性详解
java·开发语言
程序员耄耋1 小时前
JDK21的下载与安装(2025.8.2)
java
~木雨1 小时前
Java 线程从生到死:创建三式、六态流转、中断协作与死锁活锁饥饿,一篇讲透
java·java并发·虚拟线程·死锁·线程状态·中断机制
梓雨枔1 小时前
JavaScript+快速学习,简单好用~
javascript·学习
Wang's Blog1 小时前
Java框架 SpringCloud 快速入门: Nacos 服务多级存储模型
java·spring·spring cloud