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比较》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

CSS高效开发实战—CSS 3、LESS、SASS、Bootstrap、Foundation

CSS高效开发实战—CSS 3、LESS、SASS、Bootstrap、Foundation

谢郁 / 电子工业出版社 / 2014-9 / 59.00

想象一下,一个网页只有HTML,没有CSS,那就是素颜和上妆的区别。而一个网页只有CSS,没用CSS 3,那就是马车和汽车的区别!汽车代表的是高效、美观,CSS 3的意图也是如此。移动设备的流行导致了响应式设计的流行,而CSS 3正是实现这种设计的精髓。《CSS高效开发实战—CSS 3、LESS、SASS、Bootstrap、Foundation》围绕的就是如何跨浏览器、跨设备进行高效率的CSS开......一起来看看 《CSS高效开发实战—CSS 3、LESS、SASS、Bootstrap、Foundation》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具