我必须比较两种类型' mydb = new DBHelper(this.getActivity());
Cursor rs = mydb.getData(Value);
id_To_Update = Value;
rs.moveToFirst();
String addr_type = rs.getString(rs.getColumnIndex(DBHelper.ADDRESS_COLUMN_ADDRESSTYPE));
String addr_line1 = rs.getString(rs.getColumnIndex(DBHelper.ADDRESS_COLUMN_LINE1));
String addr_line2 = rs.getString(rs.getColumnIndex(DBHelper.ADDRESS_COLUMN_LINE2));
String addr_city = rs.getString(rs.getColumnIndex(DBHelper.ADDRESS_COLUMN_CITY));
String addr_zipcode = rs.getString(rs.getColumnIndex(DBHelper.ADDRESS_COLUMN_ZIPCODE));
addr_country_index = rs.getString(rs.getColumnIndex(DBHelper.ADDRESS_COLUMN_COUNTRY));
addr_state_index = rs.getString(rs.getColumnIndex(DBHelper.ADDRESS_COLUMN_STATE));
String addr_landmark = rs.getString(rs.getColumnIndex(DBHelper.ADDRESS_COLUMN_LANDMARK));
if (!rs.isClosed())
{
rs.close();
mydb.close();
}
'的地图的值(而不是键)。
地图的内容为:map[string]float64
和map1[ABCD:300 PQRS:400]
不,我做的检查就像值(map1)/值(map2)> = 1(如300/30 = 10> 1),然后做一些事情。
我怎样才能在GO中实现这一目标? TIA。
我试过这样的事情:map2[ABCD:30 PQRS:40]
答案 0 :(得分:1)
分解主循环:
for key, value1 := range m1 {
if value2, ok := m2[key]; ok {
fmt.Printf("%f / %f = %f\n", value1, value2, value1/value2)
if value2 != 0 && value1/value2 > 1 {
fmt.Println("Greater than 1!")
} else {
fmt.Println("Not greater than 1!")
}
}
}
首先,我使用range
为m1中的每个条目提取值和键,因为我们需要两者。
其次,使用value2, ok := m2[key]
的逗号确定语法,我既可以找出第二张地图对于给定密钥的关联值,又可以确保周围if ... ; ok
时存在该映射条目。根据您对问题的描述,没有必要检查第二个地图的每个元素,只检查与第一个地图共享密钥的那些元素。我们进行这项检查非常重要,因为在检查地图中不存在的密钥时,不会抛出错误,它只是默默地返回变量的零值 - 在这种情况下可能意味着之后除以零。
第三,嗯,只是一些格式化的印刷线,以帮助了解发生了什么,真正的果汁是非常简单的if value1/value2 > 1
声明。请注意,我还在我的游乐场链接中添加了一些不符合要求的地图条目,以帮助证明行为是正确的。
" go map in action"在另一个答案中链接的博客文章确实是在go中使用地图的一个很好的来源。