美文网首页
php 转 go 基本区别

php 转 go 基本区别

作者: 蛐蛐儿阳 | 来源:发表于2020-04-23 21:13 被阅读0次

1, 整数类型。 go

序号 类型和描述
1 uint8
无符号 8 位整型 (0 到 255)
2 uint16
无符号 16 位整型 (0 到 65535)
3 uint32
无符号 32 位整型 (0 到 4294967295)
4 uint64
无符号 64 位整型 (0 到 18446744073709551615)
5 int8
有符号 8 位整型 (-128 到 127)
6 int16
有符号 16 位整型 (-32768 到 32767)
7 int32
有符号 32 位整型 (-2147483648 到 2147483647)
8 int64
有符号 64 位整型 (-9223372036854775808 到 9223372036854775807)

以下代码证明占用字节数并不相同

package main

import (
    "fmt"
    "unsafe"
)

func main() {
    var num1 int8 = 8
    var num2 int64 = 9
    var num3 uint32 = 99
    fmt.Print(unsafe.Sizeof(num1))
    fmt.Print("\n")
    fmt.Print(unsafe.Sizeof(num2))
    fmt.Print("\n")
    fmt.Print(unsafe.Sizeof(num3))
}
输出
1
8
4

字符串多行拼接用+号,换行时+号必须在上一行。
go中字符默认值

int 0
float 0
string ''
flloat false

类型强制转换

int()
float32()

强制转换会二进制溢出,并不是取余数。

import 时 前面添加 _  可以暂时忽略包。

如果变量名,函数名,常量名首字母大写, 可以被其他的包访问,小写则不可以,可简单理解为,首字母大写是公用的,小写是私有的。

注释一般用 // 就可以
声明和导入包

package main

import (
    "fmt"
    "path"
    "test/model"
)
func main() {
    fmt.Print(path.Base("R"))
    fmt.Print(model.Name)
}

go 中没有前 ++

比如
++i
--i 是错误的

go 中switch 语句,默认有break.
switch 数据类型要一致,否则报错。

for range 类似foreach 写法

package main

import "fmt"

func main() {
    var str string = "hello word"
    for key, val := range str {
        fmt.Printf( "key=%d val=%c \n", key,  val)
    }
}
注意下这里替换字符串用的%c, 输出函数用的Printf.

init 初始化函数。

defer, 在函数使用完资源释放资源, 例如链接数据库。defer是栈先入后出。


image.png

go 没有try catch ,捕获异常这么用, 有匿名函数,defer + recover


image.png

1, 切片简单来说是可变的数组。 切片是数组的引用。
append 增加切片数组。


image.png

2, map 容易被检索的二维数组。 遍历要用for-range. 不能用for,因为没数字下标

go语言没有类, 用结构体 struct 结构体完成相应功能。

简单的结构体
package main

import "fmt"

type  Cat struct {
    Name string
    Age int
    Color string
}

func main() {
    var cat1 Cat
    cat1.Name = "nihao"
    fmt.Print(cat1)
    fmt.Print(cat1.Name)
}

有意思的是,同一个文件夹下,结构体名称不能重复。
结构体方法的使用。


import "fmt"

type  Dog struct {
    Name string
}

func (d Dog)  test() {
    fmt.Print(d.Name)
}


func main() {
    var dog Dog
    dog.Name = "tom"
    dog.test()
}

是又写了一个函数,将结构体传入,然后操作结构体参数,并在函数中实现逻辑。 调用时用点。

goroutine, 利用多个cpu。


image.png

只是用go 后面跟一个函数, 两块代码将会穿插执行, 可发挥多cup功能。

runtime 包可获取机器cpu数量,从而更好运行进程。
直接go 会运行多个协成, 多个协成不能同时操作一个map, 就是不能同时写一个文件,会报错。

go 处理协议,有默认的net包, 文档
http://docscn.studygolang.com/pkg/net/

image.png

相关文章

  • php 转 go 基本区别

    1, 整数类型。 go 序号 类型和描述1 uint8无符号 8 位整型 (0 到 255)2 uint...

  • golang

    golang go和php的区别类型:go为编译性语言;php解释性语言错误:go的错误处理机制;php本身或者框...

  • php登陆接口转 Go

    php登陆接口转 Go 转化宗旨: 登陆接口为例进行操作转换 php流程梳理 路由信息: UserControll...

  • Go每日精选(2019-06-14)- 基础部分

    1. Go语言的传参和传引用 2. PHP转Go系列:数组与切片 3. Golang 入门 : channel(...

  • import模块多级目录问题

    golang区别于PHP等语言每个文件只会有一级package,也就是无论go文件的目录有多深,go文件的pack...

  • PHP和Java基础语法的区别

    PHP和Java基本语法的区别,这里的区别只区分语法,不涉及函数调用 1.声明变量的方式 Java: PHP: 2...

  • php转go学习随笔

    一、 二、相同知识点1、注释方法相同2、变量和常量声明方式一样 var 和const3、运算符基本类似,位运算符记...

  • Golang入门学习路线

    打算PHP转Go,学习了几个月看过各种教程,总结出几个精品的,记录备忘。 Go 入门指南 该文档是 的译文,可以先...

  • 使用Golang完成的第一个项目

    Go语言和PHP的区别(Go语言特色) 没有类的概念,可以用结构体替代。给结构体定义变量,声明方法。 两个特殊的方...

  • 玩游戏,赚了一万钻

    go!go!go!转!转!转!眼睛跟着转盘转了N次圈万钻!万钻!万转!唉!又是2个钻! go! go! go!...

网友评论

      本文标题:php 转 go 基本区别

      本文链接:https://www.haomeiwen.com/subject/bywaihtx.html