Golang与JAVA比较

栏目: Java · 发布时间: 5年前

内容简介:func swap(x, y string) (string, string) {var a int = 100

普通用法比较

函数

func swap(x, y string) (string, string) {

var a int = 100

return y, x

}

a, b := swap("Mahesh", "Kumar")

go的方法需要加func

入参类型在参数后面,返回类型在入参后面

定义类型在变量的后面

返回值可以是多个参数

函数定义后可作为值来使用

java 中的null  go中的nil

go中的数组var balance = [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}

go    &a   a的地址

var  ip  *int

java的class就是 go 的struct

java中get,set方法

Book1.title = "Go 语言"

fmt.Printf( "Book 1 title : %s\n", Book1.title)

结构体指针

切片就是 java 中的list

var numbers []int

numbers = append(numbers, 2,3,4)

copy(numbers1,numbers)

for循环

for _, num := range nums {

sum += num

}

for i, num := range nums {

if num == 3 {

fmt.Println("index:", i)

}

}

map用法:

var countryCapitalMap map[string]string /*创建集合 */

countryCapitalMap = make(map[string]string)

/* map插入key - value对,各个国家对应的首都 */

countryCapitalMap [ "France" ] = "Paris"

delete(countryCapitalMap, "France")

for country := range countryCapitalMap {

fmt.Println(country, "首都是", countryCapitalMap [country])

}

强制转化int,string

#string到int

int,err:=strconv.Atoi(string)

#string到int64

int64, err := strconv.ParseInt(string, 10, 64)

#int到string

string:=strconv.Itoa(int)

#int64到string

string:=strconv.FormatInt(int64,10)

Go 并发

func say(s string) {

for i := 0; i < 5; i++ {

time.Sleep(100 * time.Millisecond)

fmt.Println(s)

}

}

func main() {

go say("world")

say("hello")

}

通道(channel)

ch <- v // 把 v 发送到通道 ch

v := <-ch  // 从 ch 接收数据

// 并把值赋给 v

s := []int{7, 2, 8, -9, 4, 0}

c := make(chan int)

go sum(s[:len(s)/2], c)

go sum(s[len(s)/2:], c)

x, y := <-c, <-c // 从通道 c 中接收

通道可以设置缓冲区,通过 make 的第二个参数指定缓冲区大小:

ch := make(chan int, 100)

func fibonacci(n int, c chan int) {

x, y := 0, 1

for i := 0; i < n; i++ {

c <- x

x, y = y, x+y

}

close(c)

}

func main() {

c := make(chan int, 10)

go fibonacci(cap(c), c)

// range 函数遍历每个从通道接收到的数据,因为 c 在发送完 10 个

// 数据之后就关闭了通道,所以这里我们 range 函数在接收到 10 个数据

// 之后就结束了。如果上面的 c 通道不关闭,那么 range 函数就不

// 会结束,从而在接收第 11 个数据的时候就阻塞了。

for i := range c {

fmt.Println(i)

}

并发线程模型比较

在解决高并发的时候,go相对于java来说是省去了公用内存这一步改成了1对1传值通信。

Java线程模型

Golang与JAVA比较

Go的线程实现模型

Golang与JAVA比较

Go的线程实现模型-图灵社区


以上所述就是小编给大家介绍的《Golang与JAVA比较》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

C和C++代码精粹

C和C++代码精粹

阿林森 / 董慧颖 / 人民邮电出版社 / 2003-4-1 / 59.00

《C和C++代码精粹》基于作者备受好评的C/C++ User Journal杂志上的每月专栏,通过大量完全符合ISO标准C++的程序集合,说明了C++真正强大的威力,是C和C++职业程序员的实践指南。可以帮助有一定经验的C和C++程序员深入学习这两种密切相关的语言,对书中代码的参悟和应用,可以帮助他们从根本上提高使用程序的效率。一起来看看 《C和C++代码精粹》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

在线进制转换器
在线进制转换器

各进制数互转换器

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具