page contents

php转golang常用,从PHP转换成golang语言

golang是一种强类型语言,虽然在代码中经常看到这种写法,i:=10这其实这是编译器自动做了类型推断在编译期间。编译器会对数据进行类型检查。不同类型的数据不能赋值,不能在函数中传参。强类型语言有一些优势,很多的错误会在编译期间被检查出来,不想php和python等弱类型语言,很多错误只有运行到才能被发现。同样,强类型也有一些缺点,写代码的时候要考虑数据类型了,失去了一些灵活性。

attachments-2021-08-pCqR0zoL6109e96841b84.jpg

golang是一种强类型语言,虽然在代码中经常看到这种写法,i:=10这其实这是编译器自动做了类型推断在编译期间。编译器会对数据进行类型检查。不同类型的数据不能赋值,不能在函数中传参。强类型语言有一些优势,很多的错误会在编译期间被检查出来,不想php和python等弱类型语言,很多错误只有运行到才能被发现。同样,强类型也有一些缺点,写代码的时候要考虑数据类型了,失去了一些灵活性。

言归正传,开始golang的类型转换问题

golang的类型转换和C/C++ java等语言的类型转换还有点区别

C/C++等语言有隐式类型转换,golang中没有

golang中的类型转换分强制类型转换和类型断言

在C/C++中

int main()

{

int a=5;

float b=3.5;

printf("%f",a*b);

}

这样的代码是没有问题的,编译器隐式的把a向上转为float类型。

但是在golang中

package main

import "fmt"

func main() {

var a float32 = 5.6

var b int = 10

fmt.Println (a * b)

}

这样的代码会报错,因为类型不匹配

这时候需要强制类型转换

package main

import "fmt"

func main() {

var a float32 = 5.6

var b int = 10

fmt.Println (a * float32(b))

}

这样就不会报错了

普通变量类型int,float,string都可以使用 type (a)这种形式来进行强制类型转换,比如

var a int32 = 10

var b int64 = int64(a)

var c float32 = 12.3

var d float64 =float64(c)

golang中 指针也是有类型的,

package main

func main() {

var a int = 10

var p *int =&a

var c *int64

c= (*int64)(p)

}

这样的代码是错误的,编译器会提示cannot convert p (type *int) to type *int64

指针的强制类型转换需要用到unsafe包中的函数实现

package main

import "unsafe"

import "fmt"

func main() {

var a int =10

var b *int =&a

var c *int64 = (*int64)(unsafe.Pointer(b))

fmt.Println(*c)

}

golang中还有一中类型判断,类型断言

package main

import "fmt"

func main() {

var a interface{} =10

switch a.(type){

case int:

fmt.Println("int")

case float32:

fmt.Println("string")

}

}

程序输出结果是int

类型断言还有一种用法

package main

import "fmt"

func main() {

var a interface{} =10

t,ok:= a.(int)

if ok{

fmt.Println("int",t)

}

t2,ok:= a.(float32)

if ok{

fmt.Println("float32",t2)

}

}

t,ok:= a.(int)有两个返回值,第一个是对应类型的值,第二个是bool类型的,类型判断是否正确。

好了,golang的强制类型转换写写到这,半夜困了,想到啥在补充吧。下次写一下golang中数字和字符串之间的转换

更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。

程序员编程交流QQ群:805358732

如果你想用Python开辟副业赚钱,但不熟悉爬虫与反爬虫技术,没有接单途径,也缺乏兼职经验
关注下方微信公众号:Python编程学习圈,获取价值999元全套Python入门到进阶的学习资料以及教程,还有Python技术交流群一起交流学习哦。

attachments-2022-06-yIJ50j3Z62ad6d49a72f1.jpeg

  • 发表于 2021-08-04 09:12
  • 阅读 ( 857 )
  • 分类:Golang

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
轩辕小不懂
轩辕小不懂

2403 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1474 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章