# Case statement equivalent?

**URL:** https://discourse.julialang.org/t/case-statement-equivalent/2418
**Category:** General Usage
**Created:** [March 3, 2017, 4:14am UTC](https://discourse.julialang.org/t/case-statement-equivalent/2418 "2017-03-03T04:14:20Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![purplishrock](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/purplishrock/32/13451_2.png) [@purplishrock](https://discourse.julialang.org/u/purplishrock)
#### Post date: [March 3, 2017, 4:14am UTC](https://discourse.julialang.org/t/case-statement-equivalent/2418/1 "2017-03-03T04:14:20Z")

</div>

What I want to do…

data = Foo Int | Bar Float

case x  
Foo y → print “it’s an int”, y  
Bar y → print “it’s a float”, y

Is there a way to approximate this ?

---

<div class="post-metadata">

### Author: ![purplishrock](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/purplishrock/32/13451_2.png) [@purplishrock](https://discourse.julialang.org/u/purplishrock)
#### Post date: [March 3, 2017, 4:16am UTC](https://discourse.julialang.org/t/case-statement-equivalent/2418/2 "2017-03-03T04:16:27Z")

</div>

The magic of search…

[https://matchjl.readthedocs.io/en/latest/](https://matchjl.readthedocs.io/en/latest/)

Not exactly sure how I stumbled upon it…

---

<div class="post-metadata">

### Author: ![dfdx](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dfdx/32/120_2.png) [@dfdx](https://discourse.julialang.org/u/dfdx)
#### Post date: [March 3, 2017, 9:44am UTC](https://discourse.julialang.org/t/case-statement-equivalent/2418/3 "2017-03-03T09:44:55Z")

</div>

Match.jl provides quite powerful pattern matching capabilities, but if you only want to choose action based on types (or other fixed parameters), you can use great Julia’s multiple dispatch:

```julia
struct Foo
    x::Int
end

struct Bar
    x::Float64
end

printtype(y::Foo) = println("it's a int: $y")
printtype(y::Bar) = println("it's a float: $y")

```
