Golang 基本语法 Golang
package main
import "fmt"
// 基本语法
func main(){
// 一、变量声明 Go有多种方式声明变量
// 1.显式声明
var x int
x = 10
// 2.简短声明 (简短声明只能是新变量,现在给上面的x使用简短声明,则会报错)
k := 10
// 二、数据类型
// 1.整型 int int8 int16 int32 int64
var int_a int = 5
// 2.浮点型 float32 float64
var float_a float32 = 3.14
// 3.字符串 string
var string_a string = "你好,Golang"
// 4.布尔型 bool
var bool_a bool = true
var bool_b bool = false
// 5.字符型 rune
// 三、常量声明 (常量一旦声明就不能更改其值。常量声明使用cost关键字)
const PI = 3.14
const Greeting = "Hello"
// 四、控制结构
// 条件语句 Go使用 if 语句进行条件判断
ifa := 10
if ifa > 10 {
fmt.Println("ifa 大于 10")
} else {
fmt.Println("ifa 小于等于 10")
}
// 循环语句 Go只有一个循环语句 for, 它可以用于多种情况
for i :=0; i < 5; i++ {
fmt.Println(i)
}
// 使用for 模拟 while 循环
wi := 0
for wi < 5 {
fmt.Println(wi)
wi++
}
// 无限循环
for {
fmt.Println("这是一个无限循环(死循环)")
}
// Switch 语句
day := 2
switch day {
case 1:
fmt.Println("这是1")
case 2:
fmt.Println("这是2")
default:
fmt.Println("不是1也不是2")
}
// Select语句 (用于多路选择 常用于 goroutines ) 此处略过
// 五、函数
// 函数声明 (函数使用func 关键字声明,函数可以有多个返回值)
func add(a int, b int) int {
return a + b
}
// 多返回值函数
func divide(a int, b int) (int, int) {
return a / b, a % b
}
// 匿名函数
addfunc := func(a, b int) int {
return a + b
}
fmt.Println(addfunc(3, 4))
// 函数作为参数(go支持将函数作为参数传递)
func apply(a int, f func(int) int) int {
return f(a)
}
func square(x int) int {
return x * x
}
fmt.Println(apply(5, square)) // 25
// 六、数组与切片
// 数组(Go中的数组大小是固定的,一旦声明不能更改大小)
var arr [3]int = [3]int{1, 2, 3}
fmt.Println(arr)
// 切片(切片是GO中更加灵活的数组,可以动态增长)
var slice []int = []int{1, 2, 3}
slice = append(slice, 4)
fmt.Println(slice)
// 七、结构体(结构体是 Go 中的复合数据类型,通常用来表示对象或记录)
type Person struct {
Name string
Age int
}
p := Person{Name: "John", Age: 30}
fmt.Println(p.Name)
// 八、接口(接口是 Go 中的核心概念之一,它定义了行为而不关心具体类型)
type Speaker interface {
Speak() string
}
type Person struct {
Name string
}
func (p Person) Speak() string {
return "Hello, my name is " + p.Name
}
func introduce(speaker Speaker) {
fmt.Println(speaker.Speak())
}
p := Person{Name: "John"}
introduce(p)
// 九、错误处理(Go 中没有异常处理机制,而是通过返回值来传递错误信息)
func divide(a, b int) (int, error) {
if b == 0 {
return 0, fmt.Errorf("cannot divide by zero")
}
return a / b, nil
}
result, err := divide(10, 0)
if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println("Result:", result)
}
}
Go Hello World Golang
首先安装golang环境,安装后使用 go version 验证是否安装成功
Hello World
在 Go 中,程序的入口是 main 函数。下面是一个简单的 Go 程序:
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
- package main:声明包名,main 是 Go 程序的入口包。
- import "fmt":导入标准库 fmt,用于格式化输入输出。
- func main():main 函数是 Go 程序的入口函数,程序从这里开始执行。
- fmt.Println:输出内容。
运行代码
go run main.go
开始学习Golang Golang
从 PHP 转向 Go:探索 Go 语言的优势与提升的技能
随着技术的不断发展,越来越多的开发者选择在不同的编程语言之间转换,以应对日益增长的需求和挑战。作为一个曾经的 PHP 开发者,我决定开始学习 Go 语言,并探索它带来的新体验。Go(也叫 Golang)是一门由 Google 开发的编程语言,因其高效、简洁、并发友好的特性,成为了很多开发者和企业的首选语言。
在这篇文章中,我将分享 Go 语言的几个关键优势,以及从 PHP 转向 Go 后,哪些技能和体验会得到显著提升。
Go 的优势
1. 高效的性能
Go 是一门编译型语言,它编译后的代码能够直接运行在机器上,性能接近 C 语言,而不需要像 Java 那样通过虚拟机执行。Go 的高效性能使其在处理高并发任务和大规模分布式系统时,能够提供优异的表现。这对于开发 Web 服务、微服务以及高流量应用非常重要。
相比 PHP,Go 的运行效率显著提高,尤其是在处理大量请求或高并发任务时,Go 可以更好地利用硬件资源,减少延迟。
2. 简洁的语法
Go 语言的设计哲学之一是简洁性,它去除了许多传统编程语言中复杂的特性,例如类、继承、泛型等,使得语言本身更加易学易用。Go 的语法非常简洁,只有少量的关键字和规则,这使得代码更容易阅读和维护。
从 PHP 转向 Go 后,我发现 Go 的代码结构更加直观,函数和方法的定义、变量的声明都非常清晰。你可以在很短的时间内理解其他开发者的代码,提高了团队协作的效率。
3. 内建并发支持
Go 的并发编程是其最突出的特点之一。Go 使用 goroutines 和 channels 来实现轻量级并发,这比传统的线程更加高效和易用。在 Go 中,启动一个新的 goroutine 只需要一个 go
关键字,它能够并发地执行任务,而不会造成性能瓶颈。
在 PHP 中,通常需要使用额外的工具或扩展来处理并发,而 Go 内建的并发支持使得并发编程变得更加简单和高效。这对于构建高并发的 Web 服务或实时系统来说,Go 是一个理想的选择。
4. 垃圾回收与内存管理
Go 提供了自动垃圾回收功能,它能够在后台处理内存的分配和释放,减少了手动管理内存的复杂性。Go 的垃圾回收机制是增量式的,能够有效地减少停顿时间,保持应用的高性能。
对于 PHP 开发者来说,Go 的内存管理相比 PHP 的 garbage collector
更加高效,可以帮助你在开发中更加专注于业务逻辑,而无需过多担心内存泄漏等问题。
5. 强大的标准库和生态系统
Go 提供了一个丰富的标准库,涵盖了 Web 开发、文件处理、网络编程、加密等各个方面。这意味着你可以不依赖第三方库就能实现许多常见功能。Go 的标准库文档也非常详细,学习起来非常方便。
另外,Go 语言的生态系统正在快速发展,越来越多的第三方库和框架被社区提供。例如,常用的 Web 框架(如 Gin、Echo)以及数据库操作库(如 GORM)都能帮助开发者快速开发应用。
结语
虽然目前在 PHP 中使用 Webman 提供 Web 接口,能够带来非常棒的编程体验,且开发速度较快,但 Go 语言在性能和可扩展性上具备明显的优势。Go 的高性能使得它在处理大规模并发和高负载时更加得心应手,同时它的扩展性也为构建复杂的系统提供了更多的可能性。在未来的职业发展中,掌握 Go 语言将使你在竞争中更具优势。尽管现在使用 Webman 感觉非常舒适,但成长往往来自于跳出舒适圈。加油!