Golang学习之路(六):Go+体验分享及字面量讲解

简介: Golang学习之路(六):Go+体验分享及字面量讲解

一、GO与GO+的直观区别


GO+在Go的基础上做了很多优化,Go+ 提供了更简单优雅的语法,比 Go 更接近自然语言。

下面是两者打印"hello world"的区别:

Go

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

Go+


println "hello world"


一下就有了python的感觉了,是不是很方便! 下面简单讲解一下GO+的字面量


二、GO+的字面量


1. 什么是字面量


字面量也就是我们常说的变量的值。

比如int a=11就是字面量;string b="ab"ab就是字面量。


在整型、字符、浮点这些字面量中,GO+的字面量和Go的字面量区别不大

在复数字面量(列表、map、切片等)中他们差别就体现出来了


2. 切片字面量两者区别


GO

  x := [2]float{1, 3.4} // []float64
  y := [1]int{1} // []int
  z := [2]interface{}{1+2i, "xsw"} // []interface{}

GO+


x := [1, 3.4] // []float64
y := [1] // []int
z := [1+2i, "xsw"] // []interface{}


3. map字面量两者区别

  x :=map[string] float64 {"Hello": 1, "xsw": 3.4} // map[string]float64
  y := map[string] interface{}{"Hello": 1, "xsw": "Go+"} // map[string]interface{}
  z := map[string] int{"Hello": 1, "xsw": 3} // map[string]int
  empty := map[string]interface{}{} // map[string]interface{}


GO+


  x := {"Hello": 1, "xsw": 3.4} // map[string]float64
  y := {"Hello": 1, "xsw": "Go+"} // map[string]interface{}
  z := {"Hello": 1, "xsw": 3} // map[string]int
  empty := {} // map[string]interface{}


4. 列表


GO


  a :=list.New()
  a.PushBack(1)
  a.PushBack(2)
  a.PushBack(3)


GO+


arr := [1, 2,3 ]


5. 结构体

GO+

type Config struct {
    Dir   string
    Level int
}
func foo(conf *Config) {
    // ...
}
foo({Dir: "/foo/bar", Level: 1})


这里 foo({Dir: "/foo/bar", Level: 1}) 相当于foo(&Config{Dir: "/foo/bar", Level: 1}) ,但是,您不能替换foo(&Config{"/foo/bar", 1})为foo({"/foo/bar", 1}),因为将其视为 {"/foo/bar", 1} 结构文字会令人困惑。


您还可以在 return 语句中省略结构类型。例如:


type Result struct {
    Text string
}
func foo() *Result {
    return {Text: "Hi, Go+"} // return &Result{Text: "Hi, Go+"}
}

GO+在线练习地址:https://play.goplus.org/

目录
相关文章
|
11月前
|
安全 Java 编译器
对比Java学习Go——基础理论篇
本章介绍了Java开发者学习Go语言的必要性。Go语言以简单、高效、并发为核心设计哲学,摒弃了传统的类继承和异常机制,采用组合、接口和多返回值错误处理,提升了代码清晰度与开发效率。Go直接编译为静态二进制文件,启动迅速、部署简便,其基于Goroutine和Channel的并发模型相较Java的线程与锁机制更轻量安全。此外,Go Modules简化了依赖管理,与Java的Maven/Gradle形成鲜明对比,提升了构建与部署效率。
721 1
|
10月前
|
存储 JavaScript Java
【Golang】(2)变量与常量?字面量与变量的较量!
本文带你了解Go语言中的变量与常量! 并且在变量中如何进行强制转换类型!
701 5
|
10月前
|
Java 编译器 Go
【Golang】(1)Go的运行流程步骤与包的概念
初次上手Go语言!先来了解它的运行流程吧! 在Go中对包的概念又有怎样不同的见解呢?
473 4
|
10月前
|
Java 编译器 Go
【Golang】(5)Go基础的进阶知识!带你认识迭代器与类型以及声明并使用接口与泛型!
好烦好烦好烦!你是否还在为弄不懂Go中的泛型和接口而烦恼?是否还在苦恼思考迭代器的运行方式和意义?本篇文章将带你了解Go的接口与泛型,还有迭代器的使用,附送类型断言的解释
442 3
|
10月前
|
存储 安全 Java
【Golang】(4)Go里面的指针如何?函数与方法怎么不一样?带你了解Go不同于其他高级语言的语法
结构体可以存储一组不同类型的数据,是一种符合类型。Go抛弃了类与继承,同时也抛弃了构造方法,刻意弱化了面向对象的功能,Go并非是一个传统OOP的语言,但是Go依旧有着OOP的影子,通过结构体和方法也可以模拟出一个类。
473 2
|
11月前
|
存储 Java Go
对比Java学习Go——函数、集合和OOP
Go语言的函数支持声明与调用,具备多返回值、命名返回值等特性,结合`func`关键字与类型后置语法,使函数定义简洁直观。函数可作为一等公民传递、赋值或作为参数,支持匿名函数与闭包。Go通过组合与接口实现面向对象编程,结构体定义数据,方法定义行为,接口实现多态,体现了Go语言的简洁与高效设计。
340 4
|
11月前
|
存储 Java 编译器
对比Java学习Go——程序结构与变量
本节对比了Java与Go语言的基础结构,包括“Hello, World!”程序、代码组织方式、入口函数定义、基本数据类型及变量声明方式。Java强调严格的面向对象结构,所有代码需置于类中,入口方法需严格符合`public static void main(String[] args)`格式;而Go语言结构更简洁,使用包和函数组织代码,入口函数为`func main()`。两种语言在变量声明、常量定义、类型系统等方面也存在显著差异,体现了各自的设计哲学。
391 0
|
人工智能 测试技术 持续交付
Golang深入浅出之-Go语言中的持续集成与持续部署(CI/CD)
持续集成与持续部署(CI/CD)是现代软件开发的关键实践,尤其适用于Go语言项目。本文探讨了Go项目中常见的CI/CD问题,如测试覆盖不足、版本不一致和构建时间过长,并提供解决方案及GitHub Actions示例代码,帮助开发者优化流程,提升交付效率和质量。
392 5
学习 Go并发模型
本文通过一个简单例子,讲解如何将数组数据转换为其平方值,并将其分解为三个步骤:生产信息(`producer()`)、处理信息(`square()`)和消费信息(`main()`)。进一步介绍了 FAN-OUT 和 FAN-IN 模型的优化,展示了多 goroutine 并发读写通道的实现方式。FAN-OUT 是多个 goroutine 从同一通道读取数据,而 FAN-IN 是单个 goroutine 从多个通道读取数据。最后强调了优化 FAN 模式时需根据具体场景解决瓶颈问题,并推荐使用带缓冲的通道以提高性能。
207 0
学习 Go并发模型
|
Go 开发者
go-carbon v2.6.0 重大版本更新,轻量级、语义化、对开发者友好的 golang 时间处理库
carbon 是一个轻量级、语义化、对开发者友好的 Golang 时间处理库,提供了对时间穿越、时间差值、时间极值、时间判断、星座、星座、农历、儒略日 / 简化儒略日、波斯历 / 伊朗历的支持
417 3

热门文章

最新文章

推荐镜像

更多