结构体 struct MSG int type; char data[256]; 的指针msg,给msg->data赋值 msg->data="赋值"; 报错?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结构体 struct MSG int type; char data[256]; 的指针msg,给msg->data赋值 msg->data="赋值"; 报错?相关的知识,希望对你有一定的参考价值。

msg->data="赋值";
报错:error: assignment to expression with array type
msg->data = buff;
^

strcpy(msg->data,"赋值");

参考技术A msg->data 是无符号字符型数组名,是不能被赋值的。
你应当自己写个方法,将字符串实体复制到 msg->data 中。

golang 结构体的嵌入类型和接口

结构体的嵌入类型


1、嵌入结构体1

package main

import "fmt"

type Person struct {
	name string
}

type Student struct {
	class int
	person Person         //定义person 类型为Person
}


func main(){
	s := Student{1,Person{"xiaoming"}}
	fmt.Println("name :",s.person.name)  //访问嵌入结构体的变量

}
//执行结果:
name : xiaoming

2、嵌入结构体2

package main

import "fmt"

type Person struct {
	name string
}

type Student struct {
	class int
	Person          //我们直接将Person引入到Student
}


func main(){
	s := Student{1,Person{"xiaoming"}}
	fmt.Println("name :",s.name)  //访问时可以直接访问s.name 而不需要s.person.name

}
//执行结果:
name: xiaoming

接口


1、定义接口

在go语言中,接口是定义了类型一系列方法的列表,如果一个类型实现了该接口所有的方法,那么该类型就符合该接口

package main

import "fmt"
import "math"


type Shape interface {
	area() float64

}

type Rectangle struct {
	width float64
	height float64
}

type Circle struct {
	radius float64
}

func (r Rectangle) area() float64 {
	return r.height * r.width
}

func (c Circle) area() float64 {
	return math.Pi * math.Pow(c.radius,2)
}

func getArea(shape Shape) float64 {
	return shape.area()
}

func main(){
	r := Rectangle{20,10}
	c := Circle{4}
	fmt.Println("Rectangle Area =",getArea(r))
	fmt.Println("Circle Area =",getArea(c))

}
//执行结果:
Rectangle Area = 200
Circle Area = 50.26548245743669

2、接口嵌入

package main

import "fmt"
import "math"


type Shape interface {
	area() float64

}

type MultiShape interface {
	Shape            //嵌入式
}

type Rectangle struct {
	width float64
	height float64
}

type Circle struct {
	radius float64
}

func (r Rectangle) area() float64 {
	return r.height * r.width
}

func (c Circle) area() float64 {
	return math.Pi * math.Pow(c.radius,2)
}

func getArea(shape MultiShape) float64 {        //改为MultiShape
	return shape.area()
}

func main(){
	r := Rectangle{20,10}
	c := Circle{4}
	fmt.Println("Rectangle Area =",getArea(r))
	fmt.Println("Circle Area =",getArea(c))

}
//执行结果:
Rectangle Area = 200
Circle Area = 50.26548245743669        //执行结果一致



本文出自 “欺壹世De博客” 博客,请务必保留此出处http://qiyishi.blog.51cto.com/5731577/1903029

以上是关于结构体 struct MSG int type; char data[256]; 的指针msg,给msg->data赋值 msg->data="赋值"; 报错?的主要内容,如果未能解决你的问题,请参考以下文章

.有以下的结构体变量定义语句: struct student int num; c

golang 结构体的嵌入类型和接口

go struct结构体

请问 结构体能做函数的参数吗? struct point makepoint ( int x ,int y , char c , struct point sp )

struct&Method

Go语言结构体和方法