问题描述
在下面的代码中,from tkinter import *
from tkinter import ttk
root = Tk()
def select(event): #the function to get triggered each time you choose something
if c.get() == lst[0]: #if it is the first item
print('Option 1 is selected')
elif c.get() == lst[1]: #if it is the second item
print('Option 2 is selected')
else: #or if it is the third item
print('Option 3 is selected')
lst = ['#1','#2','#3'] #creating option list
c = ttk.ComboBox(root,values=lst,state='readonly') #creating a comboBox
c.current(0) #setting first element as the item to be showed
c.pack(padx=10,pady=10) #putting on screen
c.bind('<<ComboBoxSelected>>',select) #the event that your looking for
root.mainloop()
将任何类型的数据转换为json.Marshal
:
[]byte
但是语言不允许对所有类型的数据进行显式类型转换,例如bolB,_ := json.Marshal(true)
intB,_ := json.Marshal(1)
fltB,_ := json.Marshal(2.34)
strB,_ := json.Marshal("gopher")
slcD := []string{"apple","peach","pear"}
slcB,_ := json.Marshal(slcD)
mapD := map[string]int{"apple": 5,"lettuce": 7}
mapB,_ := json.Marshal(mapD)
res1D := struct {
Page int
Fruits []string
}{
Page: 1,Fruits: []string{"apple","pear"},}
res1B,_ := json.Marshal(res1D)
不起作用。
暗示,我无法实现b := []byte(true)
(io.Reader)方法来将任何类型的数据源作为Read(p []byte) (n int,err error)
进行流传输,字符串类型[]byte
除外
strBytes := []byte(myStringData.str)
如何将任何类型的数据转换为json.Marshal
?
解决方法
json.Marshal如何将任何类型的数据转换为[] byte?
json.Marshal
不能将任何类型的数据转换为[]byte
,如软件包encoding / json的文档所述。
标题问题是:
Go允许将任何类型的数据转换为[] byte吗?
正式的答案是:是的,例如通过
func convertToBytes(interface{}) []byte {
return nil
}
尽管这种转换是不可逆的,这使得这种转换对于任何实际目的都毫无用处。